Defs-windows.gmk 18.1 KB
Newer Older
D
duke 已提交
1
#
O
ohair 已提交
2
# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
D
duke 已提交
3 4 5 6
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# This code is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 only, as
7
# published by the Free Software Foundation.  Oracle designates this
D
duke 已提交
8
# particular file as subject to the "Classpath" exception as provided
9
# by Oracle in the LICENSE file that accompanied this code.
D
duke 已提交
10 11 12 13 14 15 16 17 18 19 20
#
# This code is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
# version 2 for more details (a copy is included in the LICENSE file that
# accompanied this code).
#
# You should have received a copy of the GNU General Public License version
# 2 along with this work; if not, write to the Free Software Foundation,
# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
#
21 22 23
# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
# or visit www.oracle.com if you need additional information or have any
# questions.
D
duke 已提交
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
#

#
# Makefile to specify compiler flags for programs and libraries
# targeted to Windows builds.  Should not contain any rules.
#
# WARNING: This file is shared with other workspaces. 
#          So when it includes other files, it must use JDK_TOPDIR.
#

# Get shared JDK settings
include $(JDK_MAKE_SHARED_DIR)/Defs.gmk

# CC compiler object code output directive flag value
CC_OBJECT_OUTPUT_FLAG = -Fo
CC_PROGRAM_OUTPUT_FLAG = -Fe

# The suffix applied to the library name for FDLIBM
FDDLIBM_SUFFIX = lib
# The suffix applied to scripts (.bat for windows, nothing for unix)
SCRIPT_SUFFIX = .bat

# LIB_LOCATION, which for windows identifies where .exe files go, may be
# set by each GNUmakefile. The default is BINDIR.
ifndef LIB_LOCATION
  LIB_LOCATION = $(BINDIR)
endif # LIB_LOCATION

ifndef PLATFORM_SRC
53
  PLATFORM_SRC  = $(BUILDDIR)/../src/windows
D
duke 已提交
54 55 56 57 58
endif # PLATFORM_SRC

# Platform specific closed sources
ifndef OPENJDK
  ifndef CLOSED_PLATFORM_SRC
59
    CLOSED_PLATFORM_SRC  = $(BUILDDIR)/../src/closed/windows
D
duke 已提交
60 61 62 63 64 65 66 67 68 69
  endif
endif

# for backwards compatability, the old "win32" is used here instead of 
# the more proper "windows"
PLATFORM_INCLUDE_NAME = win32
PLATFORM_INCLUDE      = $(INCLUDEDIR)/$(PLATFORM_INCLUDE_NAME)

# The following DLL's are considered MS runtime libraries and should
#     not to be REBASEd, see deploy/make/common/Release.gmk.
70
#     msvcr*.dll: Microsoft runtimes
D
duke 已提交
71 72
ifeq ($(ARCH_DATA_MODEL), 32)
  ifeq ($(COMPILER_VERSION), VS2003)
73 74
    MSVCRNN_DLL = msvcr71.dll
    MSVCPNN_DLL = msvcp71.dll
75
    MS_RUNTIME_LIBRARIES = msvcrt.dll $(MSVCRNN_DLL)
76 77 78 79
  endif
  ifeq ($(COMPILER_VERSION), VS2005)
    MSVCRNN_DLL = msvcr80.dll
    MSVCPNN_DLL = msvcp80.dll
80
    MS_RUNTIME_LIBRARIES = msvcrt.dll $(MSVCRNN_DLL)
81 82 83 84
  endif
  ifeq ($(COMPILER_VERSION), VS2008)
    MSVCRNN_DLL = msvcr90.dll
    MSVCPNN_DLL = msvcp90.dll
85
    MS_RUNTIME_LIBRARIES = msvcrt.dll $(MSVCRNN_DLL)
D
duke 已提交
86
  endif
87 88 89
  ifeq ($(COMPILER_VERSION), VS2010)
    MSVCRNN_DLL = msvcr100.dll
    MSVCPNN_DLL = msvcp100.dll
90
    MS_RUNTIME_LIBRARIES = $(MSVCRNN_DLL)
91
  endif
D
duke 已提交
92 93
endif

94 95 96 97
ifeq ($(ARCH_DATA_MODEL), 64)
  ifeq ($(COMPILER_VERSION), VS2008)
    MSVCRNN_DLL = msvcr90.dll
    MSVCPNN_DLL = msvcp90.dll
98
    MS_RUNTIME_LIBRARIES = msvcrt.dll $(MSVCRNN_DLL)
99
  endif
100 101 102
  ifeq ($(COMPILER_VERSION), VS2010)
    MSVCRNN_DLL = msvcr100.dll
    MSVCPNN_DLL = msvcp100.dll
103
    MS_RUNTIME_LIBRARIES = $(MSVCRNN_DLL)
104
  endif
105
endif
D
duke 已提交
106 107 108 109 110 111 112 113

EXTRA_LFLAGS += /LIBPATH:$(DXSDK_LIB_PATH)

# C Compiler flag definitions

#
# Default optimization
#
114 115 116 117 118 119 120 121

ifndef OPTIMIZATION_LEVEL
  ifeq ($(PRODUCT), java)
    OPTIMIZATION_LEVEL = HIGHER
  else
    OPTIMIZATION_LEVEL = LOWER
  endif
endif
122 123 124
ifndef FASTDEBUG_OPTIMIZATION_LEVEL
  FASTDEBUG_OPTIMIZATION_LEVEL = LOWER
endif
125

D
duke 已提交
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154
ifeq ($(CC_VERSION),msvc)
  # Visual Studio .NET 2003 or VS2003 compiler option definitions:
  #   -O1      Favors reduced size over speed (-Og     -Os -Oy -Ob2 -Gs -GF -Gy)
  #   -O2      Favors speed over reduced size (-Og -Oi -Ot -Oy -Ob2 -Gs -GF -Gy)
  #   -Ox      Full optimization (use -O2)    (-Og -Oi -Ot -Oy -Ob2)
  #              (Removed in Visual Studio 2005 or VS2005)
  #   -Ob2     More aggressive inlining
  #   -Og      Global optimizations
  #   -Oi      Replace some functions with intrinsic or special forms
  #   -Op      Improve floating point calculations (disables some optimizations)
  #              (Replaced with -fp:precise in VS2005, /Op is default now)
  #   -Os      Favor small code
  #   -Ot      Favor faster code
  #   -Oy      Frame pointer omission
  #   -GB      Optimize for pentium (old VC6 option?)
  #   -G6      VS2003 version of -GB?
  #   -GF      Pool strings in read-only memory
  #   -Gf      Pool strings in read-write memory (the default)
  #   -Gs      Controls stack probess
  #   -GS      Adds buffer overflow checks on stacks
  #              (Default in VS2005)
  #   -GX      Enables exception handling 
  #              (Replaced with /EHsc in VS2005)
  #   -Gy      Function level linking only
  #
  # NOTE: With VC6, -Ox included -Gs.
  # NOTE: With VC6, -Ox, -O1, and -O2 used -Ob1, not -Ob2.
  # NOTE: With VC6, -O1 and -O2 used -Gf, not -GF.
  #
155 156 157 158 159 160

  CC_OPT/NONE    = -Od
  CC_OPT/LOWER   = -O2
  CC_OPT/HIGHER  = -O3
  CC_OPT/HIGHEST = -O3
  
D
duke 已提交
161 162 163 164 165
  ifeq ($(COMPILER_VERSION), VC6)
    # VC6 (6.2) msvc compiler (the way Tiger and early Mustang were built)
    # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
    AUTOMATIC_PCH_OPTION =
    GX_OPTION = -GX
166
    GZ_OPTION = -GZ
D
duke 已提交
167
    ifeq ($(ARCH_DATA_MODEL), 32)
168 169 170
      CC_OPT/HIGHEST = -Ox -Gy -Os -GB
      CC_OPT/HIGHER  = -Ox -Gy -Os -GB
      CC_OPT/LOWER   = -Ox -Gy -Os -GB
D
duke 已提交
171
    else
172 173 174
      CC_OPT/HIGHEST = -Ox -Gy -Op
      CC_OPT/HIGHER  = -Ox -Gy -Op
      CC_OPT/LOWER   = -Ox -Gy -Op
D
duke 已提交
175 176
    endif
  endif
177
  
D
duke 已提交
178 179 180 181 182
  ifeq ($(COMPILER_VERSION), VS2003)
    # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
    AUTOMATIC_PCH_OPTION = -YX
    # Also known as VC7 compiler
    GX_OPTION = -GX
183
    GZ_OPTION = -GZ
D
duke 已提交
184 185
    ifeq ($(ARCH_DATA_MODEL), 32)
      # Lowered opt level to try and reduce footprint, dll size especially.
186 187 188 189 190
      #     Was: CC_OPT/HIGHEST = -O2 -G6
      #     Was: CC_OPT/HIGHER  = -O2
      CC_OPT/HIGHEST = -O2
      CC_OPT/HIGHER  = -O1
      CC_OPT/LOWER   = -O1
D
duke 已提交
191
    else
192 193 194
      CC_OPT/HIGHEST = -O2 -Op
      CC_OPT/HIGHER  = -O2 -Op
      CC_OPT/LOWER   = -O1 -Op
D
duke 已提交
195 196
    endif
  endif
197
  
D
duke 已提交
198 199 200 201 202
  ifeq ($(COMPILER_VERSION), VS2005)
    # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
    AUTOMATIC_PCH_OPTION =
    # VS2005 compiler, only with Platform SDK right now?
    GX_OPTION = -EHsc
203
    GZ_OPTION = -RTC1
D
duke 已提交
204
    ifeq ($(ARCH_DATA_MODEL), 32)
205 206 207
      CC_OPT/HIGHEST = -O2
      CC_OPT/HIGHER  = -O1
      CC_OPT/LOWER   = -O1
D
duke 已提交
208
    else
209 210 211
      CC_OPT/HIGHEST = -O2
      CC_OPT/HIGHER  = -O1
      CC_OPT/LOWER   = -O1
D
duke 已提交
212 213
    endif
  endif
214 215 216 217
  ifeq ($(COMPILER_VERSION), VS2008)
    # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
    AUTOMATIC_PCH_OPTION =
    GX_OPTION = -EHsc
218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234
    GZ_OPTION = -RTC1
    ifeq ($(ARCH_DATA_MODEL), 32)
      CC_OPT/HIGHEST = -O2
      CC_OPT/HIGHER  = -O1
      CC_OPT/LOWER   = -O1
    else
      CC_OPT/HIGHEST = -O2
      CC_OPT/HIGHER  = -O1
      CC_OPT/LOWER   = -O1
    endif
  endif

  ifeq ($(COMPILER_VERSION), VS2010)
    # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
    AUTOMATIC_PCH_OPTION =
    GX_OPTION = -EHsc
    GZ_OPTION = -RTC1
235 236 237 238 239 240 241 242 243 244
    ifeq ($(ARCH_DATA_MODEL), 32)
      CC_OPT/HIGHEST = -O2
      CC_OPT/HIGHER  = -O1
      CC_OPT/LOWER   = -O1
    else
      CC_OPT/HIGHEST = -O2
      CC_OPT/HIGHER  = -O1
      CC_OPT/LOWER   = -O1
    endif
  endif
245

D
duke 已提交
246 247
else # CC_VERSION
  # GCC not supported, but left for historical reference...
248 249 250 251
  CC_OPT/NONE     =
  CC_OPT/LOWER    = -O2
  CC_OPT/HIGHER   = -O2
  CC_OPT/HIGHEST  = -O3
D
duke 已提交
252 253 254

endif

255
CC_OPT = $(CC_OPT/$(OPTIMIZATION_LEVEL))
D
duke 已提交
256 257 258 259 260 261 262 263 264 265

# Select the runtime support library carefully, need to be consistent
#
# VS2003 compiler option definitions:
#   -MD        Use dynamic multi-threaded runtime library
#   -MDd       Use debug version (don't use, doesn't mix with -MD DLL's)
#   -MT        Use static multi-threaded runtime library (-ML is going away)
#   -MTd       Use static debug version (better than -MDd, no runtime issues)
#   -D_DEBUG   Change use of malloc/free/etc to use special debug ones (-MTd)
#
266
#      NOTE: We also will use /D _STATIC_CPPLIB  so we don't need msvcpnn.dll
D
duke 已提交
267
#
268
# If MS_RUNTIME_STATIC is requested, use -MT only with VS2003.
D
duke 已提交
269
ifeq ($(MS_RUNTIME_STATIC),true)
270 271 272
  ifeq ($(COMPILER_VERSION), VS2003)
    MS_RUNTIME_OPTION=-MT
  endif
D
duke 已提交
273 274 275 276 277 278 279 280 281 282 283 284
else
  MS_RUNTIME_OPTION=-MD
endif
# The _DEBUG macro option (changes things like malloc to use debug version)
MS_RUNTIME_DEBUG_OPTION=
MS_RC_DEBUG_OPTION=
# Externally set environment variable can force any build to use the debug vers
ifeq ($(MFC_DEBUG), true)
  ifeq ($(MS_RUNTIME_STATIC),true)
    MS_RUNTIME_OPTION=-MTd
  else
    # This MS debugging flag forces a dependence on the debug
285
    #     version of the runtime library (MSVCR*D.DLL), as does -MDd.
D
duke 已提交
286 287 288 289 290 291 292 293 294
    #     We cannot re-distribute this debug runtime.
    MS_RUNTIME_OPTION=-MDd
  endif
  MS_RUNTIME_DEBUG_OPTION= -D_DEBUG
  MS_RC_DEBUG_OPTION= -d _DEBUG
endif

# Always add _STATIC_CPPLIB definition
STATIC_CPPLIB_OPTION = /D _STATIC_CPPLIB
295 296 297 298 299 300 301

# Silence the warning about using _STATIC_CPPLIB
ifneq ($(SHOW_ALL_WARNINGS),true)
  # Needed with VS2010 to turn off the deprecated warning.
  STATIC_CPPLIB_OPTION += /D _DISABLE_DEPRECATE_STATIC_CPPLIB
endif

D
duke 已提交
302 303 304 305 306 307 308 309 310 311 312
MS_RUNTIME_OPTION += $(STATIC_CPPLIB_OPTION)

ifeq ($(CC_VERSION),msvc)
  # VS2003 compiler option definitions:
  #   -Zi      Cause *.pdb file to be created, full debug information
  #   -Z7      Full debug inside the .obj, no .pdb
  #   -Zd      Basic debug, no local variables? In the .obj
  #   -Zl      Don't add runtime library name to obj file?
  #   -Od      Turns off optimization and speeds compilation
  #   -YX -Fp/.../foobar.pch   Use precompiled headers (try someday?)
  #   -nologo  Don't print out startup message
313
  #   /D _STATIC_CPPLIB
314
  #            Use static link for the C++ runtime (so msvcpnn.dll not needed)
D
duke 已提交
315 316
  #   
  CFLAGS_COMMON  += -Zi -nologo
317
  CFLAGS_OPT      = $(CC_OPT)
D
duke 已提交
318 319
  CFLAGS_DBG      = -Od $(MS_RUNTIME_DEBUG_OPTION)

320 321 322 323 324 325 326
  # REMIND: I don't see where CFLAGS_VS2005 is used. I suspect its
  # pulled in as a combined "CFLAGS_$(COMPILER_VERSION)" string
  # but the lack of this isn't causing any apparent build problems
  # with VS 2010 but it could be causing compiler warnings.
  # For now, I  will add it for all cases :
  CFLAGS_VS2010 += -Zc:wchar_t-
  #
D
duke 已提交
327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359
  # Starting from VS2005 the wchar_t is handled as a built-in C/C++ data type
  # by default. However, we expect the wchar_t to be a typedef to the
  # unsigned short data type. The -Zc:wchar_t- option restores the old
  # behavior (as seen in VS2003) to avoid massive code modifications.
  # When/if our code will be "C/C++ Standard"-compliant (at least in the area
  # of handling the wchar_t type), the option won't be necessary.
  ifeq ($(ARCH_DATA_MODEL), 32)
    CFLAGS_VS2005 += -Zc:wchar_t-
  else
    # The 64bit Platform SDK we use (April 2005) doesn't like this option
    ifneq ($(CC_VER), 14.00.40310.41)
      CFLAGS_VS2005 += -Zc:wchar_t-
    endif
  endif

  # All builds get the same runtime setting
  CFLAGS_COMMON += $(MS_RUNTIME_OPTION) $(CFLAGS_$(COMPILER_VERSION))
  

  LDEBUG = /debug
  
  ifeq ($(VTUNE_SUPPORT), true)
    OTHER_CFLAGS = -Z7 -Ox 
    LDEBUG += /pdb:NONE
  endif
  
  # The new Platform SDK and VS2005 has /GS as a default and requires 
  #    bufferoverflowU.lib on the link command line, otherwise 
  #    we get missing __security_check_cookie externals at link time. 
  BUFFEROVERFLOWLIB = bufferoverflowU.lib
  # Always add bufferoverflowU.lib to VS2005 link commands (pack uses LDDFLAGS)
  LFLAGS_VS2005 = $(BUFFEROVERFLOWLIB)

360 361
  # VS2008 has bufferoverflow baked in:
  LFLAGS_VS2008 = 
362
  LFLAGS_VS2010 = 
363

D
duke 已提交
364 365
  # LFLAGS are the flags given to $(LINK) and used to build the actual DLL file
  BASELFLAGS = -nologo /opt:REF /incremental:no
366

D
duke 已提交
367 368 369 370 371 372 373 374 375 376 377 378
  LFLAGS = $(BASELFLAGS) $(LDEBUG) $(EXTRA_LFLAGS) $(LFLAGS_$(COMPILER_VERSION))
  LDDFLAGS += $(LFLAGS_$(COMPILER_VERSION))
  
endif

#
# Preprocessor macro definitions
#
CPPFLAGS_COMMON = -DWIN32 -DIAL -D_LITTLE_ENDIAN
ifeq ($(ARCH), amd64)
  CPPFLAGS_COMMON += -D_AMD64_ -Damd64
else
379
  CPPFLAGS_COMMON += -D_X86_ -Dx86 
D
duke 已提交
380 381 382 383 384 385 386 387
endif
CPPFLAGS_COMMON += -DWIN32_LEAN_AND_MEAN

#
# Output options (use specific filenames to avoid parallel compile errors)
#
CFLAGS_COMMON += -Fd$(OBJDIR)/$(basename $(@F)).pdb -Fm$(OBJDIR)/$(basename $(@F)).map

388 389 390 391 392 393 394
#
# Use -wdNNNN to disable warning NNNN.
#   C4800 is a warning about bool performance casts (can't make go away)
#
COMPILER_WARNINGS_TO_IGNORE = 4800
CFLAGS_COMMON += $(COMPILER_WARNINGS_TO_IGNORE:%=-wd%)

D
duke 已提交
395 396 397
#
# Treat compiler warnings as errors, if requested
#
398
CFLAGS_COMMON += -W$(COMPILER_WARNING_LEVEL)
D
duke 已提交
399 400 401 402
ifeq ($(COMPILER_WARNINGS_FATAL),true)
  CFLAGS_COMMON += -WX
endif

403 404 405 406 407 408 409 410 411 412
# Turn off some warnings by default, enable them all if asked.
ifneq ($(SHOW_ALL_WARNINGS),true)
  # The -D _CRT_SECURE_NO_DEPRECATE turns off security/deprecated warnings on
  #    the standard C library functions like strcpy.
  CFLAGS_COMMON += -D _CRT_SECURE_NO_DEPRECATE
  # The -D _CRT_NONSTDC_NO_DEPRECATE turns off deprecation warnings about using
  #    non-standard C POSIX functions.
  CFLAGS_COMMON += -D _CRT_NONSTDC_NO_DEPRECATE
endif

413
CPPFLAGS_OPT    = -DNDEBUG
D
duke 已提交
414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451
CPPFLAGS_DBG    = -DDEBUG -DLOGGING

CXXFLAGS_COMMON = $(CFLAGS_COMMON)
CXXFLAGS_OPT    = $(CFLAGS_OPT)
CXXFLAGS_DBG    = $(CFLAGS_DBG)

ifneq ($(LIBRARY),fdlibm)
  EXTRA_LIBS += advapi32.lib
endif

#
# Path and option to link against the VM, if you have to. 
#
JVMLIB = $(LIBDIR)/jvm.lib
JAVALIB = $(LIBDIR)/java.lib

ifeq ($(CC_VERSION), msvc)
  CC_DEPEND        = -FD
  CC_DEPEND_FILTER = 
else # CC_VERSION
# not supported, but left for historical reference...
  CC_DEPEND        = -MM
  CC_DEPEND_FILTER = $(SED) -e 's!$*\.$(OBJECT_SUFFIX)!$(dir $@)&!g'
endif # CC_VERSION

LIBRARY_SUFFIX = dll
LIB_SUFFIX     = lib

# Settings for the JDI - Serviceability Agent binding.
HOTSPOT_SALIB_PATH   = $(HOTSPOT_IMPORT_PATH)/jre/bin
SALIB_NAME = $(LIB_PREFIX)sawindbg.$(LIBRARY_SUFFIX)
SAMAP_NAME = $(LIB_PREFIX)sawindbg.map
SAPDB_NAME = $(LIB_PREFIX)sawindbg.pdb

ifeq ($(ARCH), ia64)
  # SA will never be supported here.
  INCLUDE_SA = false
else
452
  INCLUDE_SA = true
D
duke 已提交
453 454 455
endif

# Settings for the VERSIONINFO tap on windows. 
456
VERSIONINFO_RESOURCE = $(BUILDDIR)/../src/windows/resource/version.rc
D
duke 已提交
457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501

ifneq ($(JDK_BUILD_NUMBER),)
 COOKED_BUILD_NUMBER = $(shell $(ECHO) $(JDK_BUILD_NUMBER) | $(SED) -e 's/^b//' -e 's/^0//')
else
 COOKED_BUILD_NUMBER = 0
endif

# If the update version contains non-numeric characters, we need
# to massage it into a numeric format. 
# We use the following formula:
# JDK_UPDATE_VER = JDK_UPDATE_VERSION * 10 + EXCEPTION_VERSION
#
# Here are some examples:
#     1.5.0    b01  ->  5,0,0,1
#     1.5.0_10 b01  ->  5,0,100,1
#     1.4.2 b01     ->  4,2,0,1
#     1.4.2_02 b01  ->  4,2,20,1
#     1.4.2_02a b01 ->  4,2,21,1
#     1.4.2_02b b01 ->  4,2,22,1
ifdef JDK_UPDATE_VERSION
  VTMP := $(shell $(ECHO) $(JDK_UPDATE_VERSION) | $(TR) "abcde" "12345")
  CAB_CHAR1 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 1, 1);}')
  CAB_CHAR2 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 2, 1);}')
  CAB_CHAR3 := $(shell $(ECHO) $(VTMP) | $(NAWK) '{print substr($$1, 3, 1);}')
  JDK_UPDATE_META_TAG := U$(MARKETING_NUMBER)
  ifeq ($(CAB_CHAR3),)
    CAB_CHAR3 := 0
  endif
  ifeq ($(CAB_CHAR1), 0)
    JDK_UPDATE_VER := $(CAB_CHAR2)$(CAB_CHAR3)
  else
    JDK_UPDATE_VER := $(CAB_CHAR1)$(CAB_CHAR2)$(CAB_CHAR3)
  endif
else
  JDK_UPDATE_VER := 0
endif

RC_FLAGS = /l 0x409 /r

ifeq ($(VARIANT), OPT)
  RC_FLAGS += -d NDEBUG 
else
  RC_FLAGS += $(MS_RC_DEBUG_OPTION)
endif 

502 503 504 505 506 507 508 509 510 511 512
# Values for the RC variables defined in RC_FLAGS
JDK_RC_BUILD_ID = $(FULL_VERSION)
JDK_RC_COMPANY = $(COMPANY_NAME)
JDK_RC_COMPONENT = $(PRODUCT_NAME) $(JDK_RC_PLATFORM_NAME) binary
JDK_RC_VER = \
    $(JDK_MINOR_VERSION).$(JDK_MICRO_VERSION).$(JDK_UPDATE_VER).$(COOKED_BUILD_NUMBER)
JDK_RC_COPYRIGHT = Copyright \xA9 $(COPYRIGHT_YEAR)
JDK_RC_NAME = \
    $(PRODUCT_NAME) $(JDK_RC_PLATFORM_NAME) $(JDK_MINOR_VERSION) $(JDK_UPDATE_META_TAG)
JDK_RC_FVER = \
    $(JDK_MINOR_VERSION),$(JDK_MICRO_VERSION),$(JDK_UPDATE_VER),$(COOKED_BUILD_NUMBER)
D
duke 已提交
513

514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558
# JDK name required here
RC_FLAGS += -d "JDK_BUILD_ID=$(JDK_RC_BUILD_ID)" \
            -d "JDK_COMPANY=$(JDK_RC_COMPANY)" \
            -d "JDK_COMPONENT=$(JDK_RC_COMPONENT)" \
            -d "JDK_VER=$(JDK_RC_VER)" \
            -d "JDK_COPYRIGHT=$(JDK_RC_COPYRIGHT)" \
            -d "JDK_NAME=$(JDK_RC_NAME)" \
            -d "JDK_FVER=$(JDK_RC_FVER)"

# Enable 7-Zip LZMA file (de)compression for Java Kernel if it is available
ifeq ($(ARCH_DATA_MODEL), 32)
  ifneq ($(KERNEL), off)
    # This is a hack to use until  7-Zip (and UPX) bundles can be put
    # under /java/devtools.
    ifndef DEPLOY_TOPDIR
      DEPLOY_TOPDIR=$(JDK_TOPDIR)/../deploy
    endif
    # Uncomment this block to cause build failure if above assumption false
    #DCHK = $(shell if [ ! -d $(DEPLOY_TOPDIR) ] ; then \
    #  $(ECHO) deploy_not_a_peer_of_j2se ; \
    #fi )
    #ifeq ($(DCHK), deploy_not_a_peer_of_j2se)
    #  If a build failure points to control coming here it means
    #  it means deploy is not in the same directory
    #  as j2se. Java Kernel can't tolerate that for the time being.
    #endif
    EC_TMP = $(shell if [ -d $(DEPLOY_TOPDIR)/make/lzma ] ; then \
      $(ECHO) true ; \
    else \
      $(ECHO) false ; \
    fi )
    ifeq ($(EC_TMP), true)
      EXTRA_COMP_INSTALL_PATH = lib\\\\deploy\\\\lzma.dll
      # Crazy but true: deploy/make/plugin/jinstall/Makefile.jkernel does
      # not include deploy/make/common/Defs-windows.gmk, either directly
      # or indirectly. But it does include this file, so redundantly declare
      # these variables that are in deploy/make/common/Defs-windows.gmk for
      # the sake of the Java Kernel part of the deploy build. Whew!
      EXTRA_COMP_LIB_NAME = lzma.dll
      EXTRA_COMP_PATH = $(OUTPUTDIR)/tmp/deploy/lzma/win32/obj
      EXTRA_COMP_CMD_PATH = $(EXTRA_COMP_PATH)/lzma.exe
      EXTRA_COMP_LIB_PATH = $(EXTRA_COMP_PATH)/$(EXTRA_COMP_LIB_NAME)
    endif
  endif
endif