Defs-windows.gmk 17.8 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 53
#

#
# 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

HPIS = windows
# 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
54
  PLATFORM_SRC  = $(BUILDDIR)/../src/windows
D
duke 已提交
55 56 57 58 59
endif # PLATFORM_SRC

# Platform specific closed sources
ifndef OPENJDK
  ifndef CLOSED_PLATFORM_SRC
60
    CLOSED_PLATFORM_SRC  = $(BUILDDIR)/../src/closed/windows
D
duke 已提交
61 62 63 64 65 66 67 68 69 70
  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.
71
#     msvcrt.dll, msvcrnn.dll [msvcr71 or msvcr80 or msvcr90] : Microsoft runtimes
D
duke 已提交
72 73 74
MS_RUNTIME_LIBRARIES = msvcrt.dll
ifeq ($(ARCH_DATA_MODEL), 32)
  ifeq ($(COMPILER_VERSION), VS2003)
75 76 77 78 79 80 81 82 83 84 85 86 87
    MSVCRNN_DLL = msvcr71.dll
    MSVCPNN_DLL = msvcp71.dll
    MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
  endif
  ifeq ($(COMPILER_VERSION), VS2005)
    MSVCRNN_DLL = msvcr80.dll
    MSVCPNN_DLL = msvcp80.dll
    MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
  endif
  ifeq ($(COMPILER_VERSION), VS2008)
    MSVCRNN_DLL = msvcr90.dll
    MSVCPNN_DLL = msvcp90.dll
    MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
D
duke 已提交
88
  endif
89 90 91 92 93
  ifeq ($(COMPILER_VERSION), VS2010)
    MSVCRNN_DLL = msvcr100.dll
    MSVCPNN_DLL = msvcp100.dll
    MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
  endif
D
duke 已提交
94 95
endif

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

EXTRA_LFLAGS += /LIBPATH:$(DXSDK_LIB_PATH)

# C Compiler flag definitions

#
# Default optimization
#
116 117 118 119 120 121 122 123

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

D
duke 已提交
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 155 156
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.
  #
157 158 159 160 161 162

  CC_OPT/NONE    = -Od
  CC_OPT/LOWER   = -O2
  CC_OPT/HIGHER  = -O3
  CC_OPT/HIGHEST = -O3
  
D
duke 已提交
163 164 165 166 167
  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
168
    GZ_OPTION = -GZ
D
duke 已提交
169
    ifeq ($(ARCH_DATA_MODEL), 32)
170 171 172
      CC_OPT/HIGHEST = -Ox -Gy -Os -GB
      CC_OPT/HIGHER  = -Ox -Gy -Os -GB
      CC_OPT/LOWER   = -Ox -Gy -Os -GB
D
duke 已提交
173
    else
174 175 176
      CC_OPT/HIGHEST = -Ox -Gy -Op
      CC_OPT/HIGHER  = -Ox -Gy -Op
      CC_OPT/LOWER   = -Ox -Gy -Op
D
duke 已提交
177 178
    endif
  endif
179
  
D
duke 已提交
180 181 182 183 184
  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
185
    GZ_OPTION = -GZ
D
duke 已提交
186 187
    ifeq ($(ARCH_DATA_MODEL), 32)
      # Lowered opt level to try and reduce footprint, dll size especially.
188 189 190 191 192
      #     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 已提交
193
    else
194 195 196
      CC_OPT/HIGHEST = -O2 -Op
      CC_OPT/HIGHER  = -O2 -Op
      CC_OPT/LOWER   = -O1 -Op
D
duke 已提交
197 198
    endif
  endif
199
  
D
duke 已提交
200 201 202 203 204
  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
205
    GZ_OPTION = -RTC1
D
duke 已提交
206
    ifeq ($(ARCH_DATA_MODEL), 32)
207 208 209
      CC_OPT/HIGHEST = -O2
      CC_OPT/HIGHER  = -O1
      CC_OPT/LOWER   = -O1
D
duke 已提交
210
    else
211 212 213
      CC_OPT/HIGHEST = -O2
      CC_OPT/HIGHER  = -O1
      CC_OPT/LOWER   = -O1
D
duke 已提交
214 215
    endif
  endif
216 217 218 219
  ifeq ($(COMPILER_VERSION), VS2008)
    # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
    AUTOMATIC_PCH_OPTION =
    GX_OPTION = -EHsc
220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236
    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
237 238 239 240 241 242 243 244 245 246
    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
247

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

endif

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

# 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)
#
268
#      NOTE: We also will use /D _STATIC_CPPLIB  so we don't need msvcpnn.dll
D
duke 已提交
269
#
270
# If MS_RUNTIME_STATIC is requested, use -MT only with VS2003.
D
duke 已提交
271
ifeq ($(MS_RUNTIME_STATIC),true)
272 273 274
  ifeq ($(COMPILER_VERSION), VS2003)
    MS_RUNTIME_OPTION=-MT
  endif
D
duke 已提交
275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308
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
    #     version of the runtime library (MSVCRTD.DLL), as does -MDd.
    #     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
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
  #   /D _STATIC_CPPLIB  
309
  #            Use static link for the C++ runtime (so msvcpnn.dll not needed)
D
duke 已提交
310 311
  #   
  CFLAGS_COMMON  += -Zi -nologo
312
  CFLAGS_OPT      = $(CC_OPT)
D
duke 已提交
313 314
  CFLAGS_DBG      = -Od $(MS_RUNTIME_DEBUG_OPTION)

315 316 317 318 319 320 321
  # 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 已提交
322 323 324 325 326 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
  # 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)

355 356
  # VS2008 has bufferoverflow baked in:
  LFLAGS_VS2008 = 
357
  LFLAGS_VS2010 = 
358

D
duke 已提交
359 360
  # LFLAGS are the flags given to $(LINK) and used to build the actual DLL file
  BASELFLAGS = -nologo /opt:REF /incremental:no
361 362 363 364 365
ifdef MT
    # VS2005, VS2008, and beyond: ask LINK to generate manifests for .dll & .exe
    BASELFLAGS += /manifest
endif

D
duke 已提交
366 367 368 369 370 371 372 373 374 375 376 377
  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
378
  CPPFLAGS_COMMON += -D_X86_ -Dx86 
D
duke 已提交
379 380 381 382 383 384 385 386
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

387 388 389 390 391 392 393
#
# 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 已提交
394 395 396
#
# Treat compiler warnings as errors, if requested
#
397
CFLAGS_COMMON += -W$(COMPILER_WARNING_LEVEL)
398 399
# Turn off security warnings about using the standard C library function strcpy
CFLAGS_COMMON += -D _CRT_SECURE_NO_DEPRECATE
D
duke 已提交
400 401 402 403
ifeq ($(COMPILER_WARNINGS_FATAL),true)
  CFLAGS_COMMON += -WX
endif

404
CPPFLAGS_OPT    = -DNDEBUG
D
duke 已提交
405 406 407 408 409 410 411 412 413 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
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
443
  INCLUDE_SA = true
D
duke 已提交
444 445 446
endif

# Settings for the VERSIONINFO tap on windows. 
447
VERSIONINFO_RESOURCE = $(BUILDDIR)/../src/windows/resource/version.rc
D
duke 已提交
448 449 450 451 452 453 454 455 456 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

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 

493 494 495 496 497 498 499 500 501 502 503
# 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 已提交
504

505 506 507 508 509 510 511 512 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
# 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