提交 3b75a4e8 编写于 作者: P prr

6931180: Migration to recent versions of MS Platform SDK

6944048: VS2010 build failure in make/com/sun/java/pack: missing unpack200.exe.manifest
6944015: VS2010 build failure in awt_TextArea.cpp: ambiguous call to abs()
6936319: JDK build fails in awt_DnDDS.cpp with Visual Studio 2008/Platform SDK 7
6944516: Windows L&F is broken in SwingSet2, when JDK is built with the recent Windows SDK
Summary: Changes to enable building JDK7 with Microsoft Visual Studio 2010
Reviewed-by: ohair, art, ccheung, dcubed
上级 736b748f
...@@ -152,7 +152,7 @@ $(UNPACK_EXE): $(UNPACK_EXE_FILES_o) updatefiles winres ...@@ -152,7 +152,7 @@ $(UNPACK_EXE): $(UNPACK_EXE_FILES_o) updatefiles winres
$(prep-target) $(prep-target)
$(LINKER) $(LDDFLAGS) $(UNPACK_EXE_FILES_o) $(RES) $(LIBCXX) $(LDOUTPUT)$(TEMPDIR)/unpack200$(EXE_SUFFIX) $(LINKER) $(LDDFLAGS) $(UNPACK_EXE_FILES_o) $(RES) $(LIBCXX) $(LDOUTPUT)$(TEMPDIR)/unpack200$(EXE_SUFFIX)
ifdef MT ifdef MT
$(MT) /manifest $(TEMPDIR)/unpack200$(EXE_SUFFIX).manifest /outputresource:$(TEMPDIR)/unpack200$(EXE_SUFFIX);#1 $(MT) /manifest $(OBJDIR)/unpack200$(EXE_SUFFIX).manifest /outputresource:$(TEMPDIR)/unpack200$(EXE_SUFFIX);#1
endif endif
$(CP) $(TEMPDIR)/unpack200$(EXE_SUFFIX) $(UNPACK_EXE) $(CP) $(TEMPDIR)/unpack200$(EXE_SUFFIX) $(UNPACK_EXE)
$(install-module-file) $(install-module-file)
......
...@@ -86,6 +86,11 @@ ifeq ($(ARCH_DATA_MODEL), 32) ...@@ -86,6 +86,11 @@ ifeq ($(ARCH_DATA_MODEL), 32)
MSVCPNN_DLL = msvcp90.dll MSVCPNN_DLL = msvcp90.dll
MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL) MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
endif endif
ifeq ($(COMPILER_VERSION), VS2010)
MSVCRNN_DLL = msvcr100.dll
MSVCPNN_DLL = msvcp100.dll
MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
endif
endif endif
ifeq ($(ARCH_DATA_MODEL), 64) ifeq ($(ARCH_DATA_MODEL), 64)
...@@ -94,6 +99,11 @@ ifeq ($(ARCH_DATA_MODEL), 64) ...@@ -94,6 +99,11 @@ ifeq ($(ARCH_DATA_MODEL), 64)
MSVCPNN_DLL = msvcp90.dll MSVCPNN_DLL = msvcp90.dll
MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL) MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
endif endif
ifeq ($(COMPILER_VERSION), VS2010)
MSVCRNN_DLL = msvcr100.dll
MSVCPNN_DLL = msvcp100.dll
MS_RUNTIME_LIBRARIES += $(MSVCRNN_DLL)
endif
endif endif
EXTRA_LFLAGS += /LIBPATH:$(DXSDK_LIB_PATH) EXTRA_LFLAGS += /LIBPATH:$(DXSDK_LIB_PATH)
...@@ -155,6 +165,7 @@ ifeq ($(CC_VERSION),msvc) ...@@ -155,6 +165,7 @@ ifeq ($(CC_VERSION),msvc)
# Automatic precompiled header option to use (if COMPILE_APPROACH=batch) # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
AUTOMATIC_PCH_OPTION = AUTOMATIC_PCH_OPTION =
GX_OPTION = -GX GX_OPTION = -GX
GZ_OPTION = -GZ
ifeq ($(ARCH_DATA_MODEL), 32) ifeq ($(ARCH_DATA_MODEL), 32)
CC_OPT/HIGHEST = -Ox -Gy -Os -GB CC_OPT/HIGHEST = -Ox -Gy -Os -GB
CC_OPT/HIGHER = -Ox -Gy -Os -GB CC_OPT/HIGHER = -Ox -Gy -Os -GB
...@@ -171,6 +182,7 @@ ifeq ($(CC_VERSION),msvc) ...@@ -171,6 +182,7 @@ ifeq ($(CC_VERSION),msvc)
AUTOMATIC_PCH_OPTION = -YX AUTOMATIC_PCH_OPTION = -YX
# Also known as VC7 compiler # Also known as VC7 compiler
GX_OPTION = -GX GX_OPTION = -GX
GZ_OPTION = -GZ
ifeq ($(ARCH_DATA_MODEL), 32) ifeq ($(ARCH_DATA_MODEL), 32)
# Lowered opt level to try and reduce footprint, dll size especially. # Lowered opt level to try and reduce footprint, dll size especially.
# Was: CC_OPT/HIGHEST = -O2 -G6 # Was: CC_OPT/HIGHEST = -O2 -G6
...@@ -190,6 +202,7 @@ ifeq ($(CC_VERSION),msvc) ...@@ -190,6 +202,7 @@ ifeq ($(CC_VERSION),msvc)
AUTOMATIC_PCH_OPTION = AUTOMATIC_PCH_OPTION =
# VS2005 compiler, only with Platform SDK right now? # VS2005 compiler, only with Platform SDK right now?
GX_OPTION = -EHsc GX_OPTION = -EHsc
GZ_OPTION = -RTC1
ifeq ($(ARCH_DATA_MODEL), 32) ifeq ($(ARCH_DATA_MODEL), 32)
CC_OPT/HIGHEST = -O2 CC_OPT/HIGHEST = -O2
CC_OPT/HIGHER = -O1 CC_OPT/HIGHER = -O1
...@@ -204,6 +217,23 @@ ifeq ($(CC_VERSION),msvc) ...@@ -204,6 +217,23 @@ ifeq ($(CC_VERSION),msvc)
# Automatic precompiled header option to use (if COMPILE_APPROACH=batch) # Automatic precompiled header option to use (if COMPILE_APPROACH=batch)
AUTOMATIC_PCH_OPTION = AUTOMATIC_PCH_OPTION =
GX_OPTION = -EHsc GX_OPTION = -EHsc
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
ifeq ($(ARCH_DATA_MODEL), 32) ifeq ($(ARCH_DATA_MODEL), 32)
CC_OPT/HIGHEST = -O2 CC_OPT/HIGHEST = -O2
CC_OPT/HIGHER = -O1 CC_OPT/HIGHER = -O1
...@@ -282,6 +312,13 @@ ifeq ($(CC_VERSION),msvc) ...@@ -282,6 +312,13 @@ ifeq ($(CC_VERSION),msvc)
CFLAGS_OPT = $(CC_OPT) CFLAGS_OPT = $(CC_OPT)
CFLAGS_DBG = -Od $(MS_RUNTIME_DEBUG_OPTION) CFLAGS_DBG = -Od $(MS_RUNTIME_DEBUG_OPTION)
# 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-
#
# Starting from VS2005 the wchar_t is handled as a built-in C/C++ data type # 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 # 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 # unsigned short data type. The -Zc:wchar_t- option restores the old
...@@ -317,6 +354,7 @@ ifeq ($(CC_VERSION),msvc) ...@@ -317,6 +354,7 @@ ifeq ($(CC_VERSION),msvc)
# VS2008 has bufferoverflow baked in: # VS2008 has bufferoverflow baked in:
LFLAGS_VS2008 = LFLAGS_VS2008 =
LFLAGS_VS2010 =
# LFLAGS are the flags given to $(LINK) and used to build the actual DLL file # LFLAGS are the flags given to $(LINK) and used to build the actual DLL file
BASELFLAGS = -nologo /opt:REF /incremental:no BASELFLAGS = -nologo /opt:REF /incremental:no
......
...@@ -357,6 +357,9 @@ initial-module-image-jdk:: initial-module-image-jdk-setup \ ...@@ -357,6 +357,9 @@ initial-module-image-jdk:: initial-module-image-jdk-setup \
$(MKDIR) -p $(JDK_MODULE_IMAGE_DIR)/bin $(MKDIR) -p $(JDK_MODULE_IMAGE_DIR)/bin
$(CP) $(BINDIR)/*$(EXE_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin $(CP) $(BINDIR)/*$(EXE_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
$(CP) $(BINDIR)/jli.$(LIBRARY_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin $(CP) $(BINDIR)/jli.$(LIBRARY_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
ifeq ($(COMPILER_VERSION), VS2010)
$(CP) $(BINDIR)/msvc*100.$(LIBRARY_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
endif
ifeq ($(ARCH_DATA_MODEL), 32) ifeq ($(ARCH_DATA_MODEL), 32)
ifeq ($(COMPILER_VERSION), VS2003) ifeq ($(COMPILER_VERSION), VS2003)
$(CP) $(BINDIR)/msvc*71.$(LIBRARY_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin $(CP) $(BINDIR)/msvc*71.$(LIBRARY_SUFFIX) $(JDK_MODULE_IMAGE_DIR)/bin
......
...@@ -749,6 +749,8 @@ initial-image-jre-sol64:: initial-image-jre-setup \ ...@@ -749,6 +749,8 @@ initial-image-jre-sol64:: initial-image-jre-setup \
$(RM) `$(FIND) $(JRE_IMAGE_DIR)/lib -name 'ir.idl'` $(RM) `$(FIND) $(JRE_IMAGE_DIR)/lib -name 'ir.idl'`
# Construct an initial jre image (initial jdk jre) no trimming or stripping # Construct an initial jre image (initial jdk jre) no trimming or stripping
# See "initial-image-jdk-setup" for an explanation of the rm of
# drive names like C:
initial-image-jre:: initial-image-jre-setup \ initial-image-jre:: initial-image-jre-setup \
$(JRE_LICENSES) $(JRE_DOCFILES) \ $(JRE_LICENSES) $(JRE_DOCFILES) \
$(RT_JAR) $(RESOURCES_JAR) $(JSSE_JAR) \ $(RT_JAR) $(RESOURCES_JAR) $(JSSE_JAR) \
...@@ -759,6 +761,10 @@ initial-image-jre:: initial-image-jre-setup \ ...@@ -759,6 +761,10 @@ initial-image-jre:: initial-image-jre-setup \
$(MKDIR) -p $(JRE_IMAGE_DIR)/lib/applet $(MKDIR) -p $(JRE_IMAGE_DIR)/lib/applet
@# Copy in lib directory @# Copy in lib directory
$(CD) $(OUTPUTDIR) && $(FIND) lib -depth | $(CPIO) -pdum $(JRE_IMAGE_DIR) $(CD) $(OUTPUTDIR) && $(FIND) lib -depth | $(CPIO) -pdum $(JRE_IMAGE_DIR)
ifeq ($(USING_CYGWIN),true)
$(RM) -rf $(JRE_IMAGE_DIR)/[A-Za-z]:
$(RM) -rf $(OUTPUTDIR)/[A-Za-z]:
endif
@# Make sure all directories are read/execute for everyone @# Make sure all directories are read/execute for everyone
$(CHMOD) a+rx `$(FIND) $(JRE_IMAGE_DIR) -type d` $(CHMOD) a+rx `$(FIND) $(JRE_IMAGE_DIR) -type d`
@# Remove some files from the jre area @# Remove some files from the jre area
...@@ -858,11 +864,27 @@ endif ...@@ -858,11 +864,27 @@ endif
###################################################### ######################################################
# Note: cpio ($(CPIO)) sometimes leaves directories without rx access. # Note: cpio ($(CPIO)) sometimes leaves directories without rx access.
# REMIND: the $(RM) calls for patterns like c:, d: following $(CPIO)
# are because the 1.7.x versions of cygwin's cpio command drops these
# in the working directory if the output path begins with that pattern
# The one for the output jre subdirectory gets there because cpio sees its
# own dropping in the input jre subdirectory. Need to remove both of these.
# We can remove these RM's if someone figures out how to stop cpio from
# leaving these there.
# Note that its a real problem not because this directory can end up in the
# bundle (I think it won't since it not in bin or lib and those are the
# only places from which we copy everything), but because the presence
# of this file causes cygwin's find to bomb out, thus breaking the build
# in "install".
initial-image-jdk-setup: initial-image-jdk-setup:
$(RM) -r $(JDK_IMAGE_DIR) $(RM) -r $(JDK_IMAGE_DIR)
$(MKDIR) -p $(JDK_IMAGE_DIR)/jre $(MKDIR) -p $(JDK_IMAGE_DIR)/jre
($(CD) $(JRE_IMAGE_DIR) && $(FIND) . -depth -print \ ($(CD) $(JRE_IMAGE_DIR) && $(FIND) . -depth -print \
| $(CPIO) -pdum $(JDK_IMAGE_DIR)/jre ) | $(CPIO) -pdum $(JDK_IMAGE_DIR)/jre )
ifeq ($(USING_CYGWIN),true)
$(RM) -rf $(JRE_IMAGE_DIR)/[A-Za-z]:
$(RM) -rf $(JDK_IMAGE_DIR)/jre/[A-Za-z]:
endif
$(RM) -rf $(JDK_IMAGE_DIR)/jre/man $(RM) -rf $(JDK_IMAGE_DIR)/jre/man
$(CHMOD) a+rx `$(FIND) $(JDK_IMAGE_DIR) -type d` $(CHMOD) a+rx `$(FIND) $(JDK_IMAGE_DIR) -type d`
...@@ -923,6 +945,9 @@ initial-image-jdk:: initial-image-jdk-setup \ ...@@ -923,6 +945,9 @@ initial-image-jdk:: initial-image-jdk-setup \
$(MKDIR) -p $(JDK_IMAGE_DIR)/bin $(MKDIR) -p $(JDK_IMAGE_DIR)/bin
$(CP) $(BINDIR)/*$(EXE_SUFFIX) $(JDK_IMAGE_DIR)/bin $(CP) $(BINDIR)/*$(EXE_SUFFIX) $(JDK_IMAGE_DIR)/bin
$(CP) $(BINDIR)/jli.$(LIBRARY_SUFFIX) $(JDK_IMAGE_DIR)/bin $(CP) $(BINDIR)/jli.$(LIBRARY_SUFFIX) $(JDK_IMAGE_DIR)/bin
ifeq ($(COMPILER_VERSION), VS2010)
$(CP) $(BINDIR)/msvc*100.$(LIBRARY_SUFFIX) $(JDK_IMAGE_DIR)/bin
endif
ifeq ($(ARCH_DATA_MODEL), 32) ifeq ($(ARCH_DATA_MODEL), 32)
ifeq ($(COMPILER_VERSION), VS2003) ifeq ($(COMPILER_VERSION), VS2003)
$(CP) $(BINDIR)/msvc*71.$(LIBRARY_SUFFIX) $(JDK_IMAGE_DIR)/bin $(CP) $(BINDIR)/msvc*71.$(LIBRARY_SUFFIX) $(JDK_IMAGE_DIR)/bin
......
...@@ -67,7 +67,7 @@ ifeq ($(PLATFORM), windows) ...@@ -67,7 +67,7 @@ ifeq ($(PLATFORM), windows)
COMPILER_VERSION=VS2005 COMPILER_VERSION=VS2005
REBASE = $(COMPILER_PATH)../../Common8/Tools/Bin/rebase REBASE = $(COMPILER_PATH)../../Common8/Tools/Bin/rebase
MTL = $(COMPILER_PATH)../../Common8/Tools/Bin/midl MTL = $(COMPILER_PATH)../../Common8/Tools/Bin/midl
MT = $(MSDEVTOOLS_PATH)mt MT = $(MSDEVTOOLS_PATH)/mt
ifndef COMPILER_PATH ifndef COMPILER_PATH
COMPILER_PATH := $(error COMPILER_PATH cannot be empty here) COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
endif endif
...@@ -83,6 +83,17 @@ ifeq ($(PLATFORM), windows) ...@@ -83,6 +83,17 @@ ifeq ($(PLATFORM), windows)
COMPILER_PATH := $(error COMPILER_PATH cannot be empty here) COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
endif endif
endif endif
ifeq ($(CC_MAJORVER), 16)
COMPILER_NAME=Visual Studio 10
COMPILER_VERSION=VS2010
#rebase and midl moved out of Visual Studio into the SDK:
REBASE = $(MSDEVTOOLS_PATH)/rebase
MTL = $(MSDEVTOOLS_PATH)/midl.exe
MT = $(MSDEVTOOLS_PATH)mt
ifndef COMPILER_PATH
COMPILER_PATH := $(error COMPILER_PATH cannot be empty here)
endif
endif
else else
# else ARCH_DATA_MODEL is 64 # else ARCH_DATA_MODEL is 64
LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}') LINK_VER := $(shell $(LINK) | $(HEAD) -n 1 | $(NAWK) '{print $$6}')
...@@ -122,6 +133,15 @@ ifeq ($(PLATFORM), windows) ...@@ -122,6 +133,15 @@ ifeq ($(PLATFORM), windows)
COMPILER_VERSION=VS2008 COMPILER_VERSION=VS2008
RC = $(MSSDK61)/Bin/X64/rc.exe RC = $(MSSDK61)/Bin/X64/rc.exe
MT = $(MSSDK61)/Bin/X64/mt.exe MT = $(MSSDK61)/Bin/X64/mt.exe
MTL = $(MSSDK61)/Bin/X64/midl.exe
endif
ifeq ($(CC_MAJORVER), 16)
COMPILER_NAME=Microsoft Visual Studio 10 (16.00.30319.01)
COMPILER_VERSION=VS2010
RC = $(MSDEVTOOLS_PATH)/Bin/x64/rc.exe
RSC = $(MSDEVTOOLS_PATH)/Bin/x64/rc.exe
MT = $(MSDEVTOOLS_PATH)/Bin/x64/mt.exe
MTL = $(MSDEVTOOLS_PATH)/Bin/X64/midl.exe
endif endif
# This will cause problems if ALT_COMPILER_PATH is defined to "" # This will cause problems if ALT_COMPILER_PATH is defined to ""
# which is a directive to use the PATH. # which is a directive to use the PATH.
......
...@@ -165,10 +165,10 @@ ifeq ($(PLATFORM), windows) ...@@ -165,10 +165,10 @@ ifeq ($(PLATFORM), windows)
REQUIRED_DXSDK_VER = 0x0900 REQUIRED_DXSDK_VER = 0x0900
ifeq ($(CC_VERSION),msvc) ifeq ($(CC_VERSION),msvc)
ifeq ($(ARCH_DATA_MODEL), 32) ifeq ($(ARCH_DATA_MODEL), 32)
REQUIRED_COMPILER_NAME = Visual Studio 9 REQUIRED_COMPILER_NAME = Visual Studio 10
REQUIRED_COMPILER_VERSION = VS2008 REQUIRED_COMPILER_VERSION = VS2010
REQUIRED_CC_VER = 15.00.21022.08 REQUIRED_CC_VER = 16.00.30319.01
REQUIRED_LINK_VER = 9.00.21022.08 REQUIRED_LINK_VER = 10.00.30319.01
else else
ifeq ($(ARCH), ia64) ifeq ($(ARCH), ia64)
REQUIRED_COMPILER_NAME = Microsoft Platform SDK - November 2001 Edition REQUIRED_COMPILER_NAME = Microsoft Platform SDK - November 2001 Edition
...@@ -177,10 +177,10 @@ ifeq ($(PLATFORM), windows) ...@@ -177,10 +177,10 @@ ifeq ($(PLATFORM), windows)
REQUIRED_LINK_VER = 7.00.9337.7 REQUIRED_LINK_VER = 7.00.9337.7
endif endif
ifeq ($(ARCH), amd64) ifeq ($(ARCH), amd64)
REQUIRED_COMPILER_NAME = Microsoft Windows SDK with Visual Studio 9 (6001.18000.367) REQUIRED_COMPILER_NAME = Visual Studio 10
REQUIRED_COMPILER_VERSION = VS2008 REQUIRED_COMPILER_VERSION = VS2010
REQUIRED_CC_VER = 15.00.21022.08 REQUIRED_CC_VER = 16.00.30319.01
REQUIRED_LINK_VER = 9.00.21022.08 REQUIRED_LINK_VER = 10.00.30319.01
endif endif
endif endif
endif endif
......
...@@ -248,6 +248,13 @@ ifeq ($(ARCH_DATA_MODEL), 32) ...@@ -248,6 +248,13 @@ ifeq ($(ARCH_DATA_MODEL), 32)
# If we still don't have it, look for VSnnCOMNTOOLS (newest first), # If we still don't have it, look for VSnnCOMNTOOLS (newest first),
# set by installer? # set by installer?
ifeq ($(_msvc_dir),) ifeq ($(_msvc_dir),)
ifdef VS100COMNTOOLS # /Common/Tools directory, use ../../Vc
xVS100COMNTOOLS :="$(subst \,/,$(VS100COMNTOOLS))"
_vs100tools :=$(call FullPath,$(xVS100COMNTOOLS))
endif
ifneq ($(_vs100tools),)
_msvc_dir :=$(_vs100tools)/../../Vc
else
ifdef VS90COMNTOOLS # /Common/Tools directory, use ../../Vc ifdef VS90COMNTOOLS # /Common/Tools directory, use ../../Vc
xVS90COMNTOOLS :="$(subst \,/,$(VS90COMNTOOLS))" xVS90COMNTOOLS :="$(subst \,/,$(VS90COMNTOOLS))"
_vs90tools :=$(call FullPath,$(xVS90COMNTOOLS)) _vs90tools :=$(call FullPath,$(xVS90COMNTOOLS))
...@@ -272,11 +279,14 @@ ifeq ($(ARCH_DATA_MODEL), 32) ...@@ -272,11 +279,14 @@ ifeq ($(ARCH_DATA_MODEL), 32)
endif endif
endif endif
endif endif
endif
ifneq ($(_msvc_dir),) ifneq ($(_msvc_dir),)
_compiler_bin :=$(_msvc_dir)/Bin _compiler_bin :=$(_msvc_dir)/Bin
# Assume PlatformSDK is in VS71 (will be empty if VS90) # Assume PlatformSDK is in VS71 (will be empty if VS90)
_ms_sdk :=$(call FullPath,$(_msvc_dir)/PlatformSDK) _ms_sdk :=$(call FullPath,$(_msvc_dir)/PlatformSDK)
# Assume VS90, then VS80, then VS71 # Assume VS100, then VS90, then VS80, then VS71
_redist_sdk :=$(call FullPath,$(_msvc_dir)/redist/x86/Microsoft.VC100.CRT)
ifeq ($(_redist_sdk),)
_redist_sdk :=$(call FullPath,$(_msvc_dir)/redist/x86/Microsoft.VC90.CRT) _redist_sdk :=$(call FullPath,$(_msvc_dir)/redist/x86/Microsoft.VC90.CRT)
ifeq ($(_redist_sdk),) ifeq ($(_redist_sdk),)
_redist_sdk :=$(call FullPath,$(_msvc_dir)/redist/x86/Microsoft.VC80.CRT) _redist_sdk :=$(call FullPath,$(_msvc_dir)/redist/x86/Microsoft.VC80.CRT)
...@@ -285,6 +295,7 @@ ifeq ($(ARCH_DATA_MODEL), 32) ...@@ -285,6 +295,7 @@ ifeq ($(ARCH_DATA_MODEL), 32)
endif endif
endif endif
endif endif
endif
endif endif
# The Microsoft Platform SDK installed by itself # The Microsoft Platform SDK installed by itself
...@@ -316,8 +327,24 @@ ifeq ($(_ms_sdk),) ...@@ -316,8 +327,24 @@ ifeq ($(_ms_sdk),)
endif endif
endif endif
# Compilers for 64bit are from SDK # Compilers for 64bit may be from SDK. For VS 2010 we use those.
# The Express compilers don't contain 64 bit compilers, so in
# that case, you additionally need the SDK. At this time,
# there's no 64 bit SDK available that has VS 2010.
# Presumably SDK v7.1 will provide that and we may want to update
# the logic here to work with that.
# However official builds will use the Professional version.
ifeq ($(ARCH_DATA_MODEL), 64) ifeq ($(ARCH_DATA_MODEL), 64)
ifdef VS100COMNTOOLS # /Common7/Tools directory, use ../../Vc
xVS100COMNTOOLS :="$(subst \,/,$(VS100COMNTOOLS))"
_vs100tools :=$(call FullPath,$(xVS100COMNTOOLS))
endif
ifneq ($(_vs100tools),)
_compiler_bin :=$(_vs100tools)/../../Vc/bin/amd64
_redist_sdk :=$(_vs100tools)/../../Vc/redist/x64/Microsoft.VC100.CRT
xMSSDK70 :="$(_program_files32)/Microsoft SDKs/Windows/v7.0a/"
MSSDK70 :=$(call FullPath,$(xMSSDK70))
else
xVS2008 :="$(_program_files32)/Microsoft Visual Studio 9.0/" xVS2008 :="$(_program_files32)/Microsoft Visual Studio 9.0/"
VS2008 :=$(call FullPath,$(xVS2008)) VS2008 :=$(call FullPath,$(xVS2008))
ifneq ($(VS2008),) ifneq ($(VS2008),)
...@@ -336,6 +363,7 @@ ifeq ($(ARCH_DATA_MODEL), 64) ...@@ -336,6 +363,7 @@ ifeq ($(ARCH_DATA_MODEL), 64)
endif endif
endif endif
endif endif
endif
endif endif
# Location on system where jdk installs might be # Location on system where jdk installs might be
...@@ -454,10 +482,14 @@ MSVCRT_DLL_PATH:=$(call AltCheckValue,MSVCRT_DLL_PATH) ...@@ -454,10 +482,14 @@ MSVCRT_DLL_PATH:=$(call AltCheckValue,MSVCRT_DLL_PATH)
ifeq ($(ARCH_DATA_MODEL), 32) ifeq ($(ARCH_DATA_MODEL), 32)
_NEEDS_MSVCRNN = true _NEEDS_MSVCRNN = true
else else
ifeq ($(VS2008),) ifneq ($(VS2010),)
_NEEDS_MSVCRNN = false _NEEDS_MSVCRNN = true
else else
ifneq ($(VS2008),)
_NEEDS_MSVCRNN = true _NEEDS_MSVCRNN = true
else
_NEEDS_MSVCRNN = false
endif
endif endif
endif endif
...@@ -557,6 +589,17 @@ else ...@@ -557,6 +589,17 @@ else
endif endif
CSCRIPT:=$(call AltCheckSpaces,CSCRIPT) CSCRIPT:=$(call AltCheckSpaces,CSCRIPT)
# CABARC: path to cabarc.exe (used in creating install bundles)
ifdef ALT_CABARC
xALT_CABARC :="$(subst \,/,$(ALT_CABARC))"
CABARC =$(xALT_CABARC)
else
_CABARC1 :=$(_system_root)/system32/cabarc.exe
_CABARC2 :=$(DEVTOOLS_PATH)cabarc.exe
CABARC :=$(call FileExists,$(_CABARC1),$(_CABARC2))
endif
CABARC:=$(call AltCheckSpaces,CABARC)
# MSIVAL2: path to msival2.exe (used in validating install msi files) # MSIVAL2: path to msival2.exe (used in validating install msi files)
ifdef ALT_MSIVAL2 ifdef ALT_MSIVAL2
xALT_MSIVAL2 :="$(subst \,/,$(ALT_MSIVAL2))" xALT_MSIVAL2 :="$(subst \,/,$(ALT_MSIVAL2))"
......
...@@ -275,7 +275,12 @@ ifeq ($(PLATFORM), windows) ...@@ -275,7 +275,12 @@ ifeq ($(PLATFORM), windows)
endif endif
ARCH_FAMILY = $(ARCH) ARCH_FAMILY = $(ARCH)
# Where is unwanted output to be delivered? # Where is unwanted output to be delivered?
# MKS uses the special file "NUL", cygwin uses the customary unix file.
ifeq ($(USING_CYGWIN),true)
DEV_NULL = /dev/null
else
DEV_NULL = NUL DEV_NULL = NUL
endif
export DEV_NULL export DEV_NULL
# Classpath separator # Classpath separator
CLASSPATH_SEPARATOR = ; CLASSPATH_SEPARATOR = ;
......
...@@ -33,14 +33,16 @@ ...@@ -33,14 +33,16 @@
#include "defines.h" #include "defines.h"
#ifdef _MSC_VER #ifdef _MSC_VER
#if _MSC_VER > 1400 #if _MSC_VER > 1400 && _MSC_VER < 1600
/* /*
* When building for Microsoft Windows, main has a dependency on msvcr??.dll. * When building for Microsoft Windows, main has a dependency on msvcr??.dll.
* *
* When using Visual Studio 2005 or later, that must be recorded in * When using Visual Studio 2005 or 2008, that must be recorded in
* the [java,javaw].exe.manifest file. * the [java,javaw].exe.manifest file.
* *
* As of VS2010 (ver=1600), the runtimes again no longer need manifests.
*
* Reference: * Reference:
* C:/Program Files/Microsoft SDKs/Windows/v6.1/include/crtdefs.h * C:/Program Files/Microsoft SDKs/Windows/v6.1/include/crtdefs.h
*/ */
...@@ -67,7 +69,7 @@ ...@@ -67,7 +69,7 @@
"publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"") "publicKeyToken='" _VC_ASSEMBLY_PUBLICKEYTOKEN "'\"")
#endif /* _M_AMD64 */ #endif /* _M_AMD64 */
#endif /* _MSC_VER > 1400 */ #endif /* _MSC_VER > 1400 && _MSC_VER < 1600 */
#endif /* _MSC_VER */ #endif /* _MSC_VER */
/* /*
......
...@@ -148,11 +148,18 @@ LoadMSVCRT() ...@@ -148,11 +148,18 @@ LoadMSVCRT()
* assumed to be present in the "JRE path" directory. If it is not found * assumed to be present in the "JRE path" directory. If it is not found
* there (or "JRE path" fails to resolve), skip the explicit load and let * there (or "JRE path" fails to resolve), skip the explicit load and let
* nature take its course, which is likely to be a failure to execute. * nature take its course, which is likely to be a failure to execute.
* This is clearly completely specific to the exact compiler version
* which isn't very nice, but its hardly the only place.
* No attempt to look for compiler versions in between 2003 and 2010
* as we aren't supporting building with those.
*/ */
#ifdef _MSC_VER #ifdef _MSC_VER
#if _MSC_VER < 1400 #if _MSC_VER < 1400
#define CRT_DLL "msvcr71.dll" #define CRT_DLL "msvcr71.dll"
#endif #endif
#if _MSC_VER >= 1600
#define CRT_DLL "msvcr100.dll"
#endif
#ifdef CRT_DLL #ifdef CRT_DLL
if (GetJREPath(crtpath, MAXPATHLEN)) { if (GetJREPath(crtpath, MAXPATHLEN)) {
(void)JLI_StrCat(crtpath, "\\bin\\" CRT_DLL); /* Add crt dll */ (void)JLI_StrCat(crtpath, "\\bin\\" CRT_DLL); /* Add crt dll */
......
...@@ -29,7 +29,10 @@ ...@@ -29,7 +29,10 @@
#define STRICT #define STRICT
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400 /* REMIND : 0x500 means Windows 2000 .. seems like we can update
* for Windows XP when we move the SDK and build platform
*/
#define _WIN32_WINNT 0x0500
#endif #endif
#define _ATL_APARTMENT_THREADED #define _ATL_APARTMENT_THREADED
......
...@@ -29,7 +29,10 @@ ...@@ -29,7 +29,10 @@
#define STRICT #define STRICT
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400 /* REMIND : 0x500 means Windows 2000 .. seems like we can update
* for Windows XP when we move the SDK and build platform
*/
#define _WIN32_WINNT 0x0500
#endif #endif
#define _ATL_APARTMENT_THREADED #define _ATL_APARTMENT_THREADED
......
...@@ -36,7 +36,10 @@ ...@@ -36,7 +36,10 @@
#define STRICT #define STRICT
#ifndef _WIN32_WINNT #ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400 /* REMIND : 0x500 means Windows 2000 .. seems like we can update
* for Windows XP when we move the SDK and build platform
*/
#define _WIN32_WINNT 0x0500
#endif #endif
#define _ATL_APARTMENT_THREADED #define _ATL_APARTMENT_THREADED
......
...@@ -233,7 +233,19 @@ void AwtDesktopProperties::GetNonClientParameters() { ...@@ -233,7 +233,19 @@ void AwtDesktopProperties::GetNonClientParameters() {
// //
NONCLIENTMETRICS ncmetrics; NONCLIENTMETRICS ncmetrics;
// Fix for 6944516: specify correct size for ncmetrics on WIN2K/XP
// Microsoft recommend to subtract the size of 'iPaddedBorderWidth' field
// when running on XP. However this can't be referenced at compile time
// with the older SDK, so there use 'lfMessageFont' plus its size.
if (!IS_WINVISTA) {
#if defined(_MSC_VER) && (_MSC_VER >= 1600) {
ncmetrics.cbSize = offsetof(NONCLIENTMETRICS, iPaddedBorderWidth);
#else
ncmetrics.cbSize = offsetof(NONCLIENTMETRICS,lfMessageFont) + sizeof(LOGFONT);
#endif
} else {
ncmetrics.cbSize = sizeof(ncmetrics); ncmetrics.cbSize = sizeof(ncmetrics);
}
VERIFY( SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncmetrics.cbSize, &ncmetrics, FALSE) ); VERIFY( SystemParametersInfo(SPI_GETNONCLIENTMETRICS, ncmetrics.cbSize, &ncmetrics, FALSE) );
SetFontProperty( TEXT("win.frame.captionFont"), ncmetrics.lfCaptionFont ); SetFontProperty( TEXT("win.frame.captionFont"), ncmetrics.lfCaptionFont );
......
...@@ -29,21 +29,16 @@ ...@@ -29,21 +29,16 @@
//we need <new> inclusion for STL "new" oprators set. //we need <new> inclusion for STL "new" oprators set.
#define bad_alloc zbad_alloc #define bad_alloc zbad_alloc
#include <new> #include <new>
#pragma pop_macro("bad_alloc")
//"bad_alloc" is undefined from here
//we need to include any STL container before <awt.h> inclusion due to
//"new" re-redefinition that is in conflict with in-place new allocator
//applied in STL.
#if defined(_DEBUG) || defined(DEBUG) #if defined(_DEBUG) || defined(DEBUG)
//forward declaration of "new" operator from <awt.h> extern void * operator new(size_t size, const char * filename, int linenumber);
extern void * operator new(size_t size, const char * filename, int linenumber); void * operator new(size_t size) {return operator new(size, "stl", 1);}
//"new" operator definition that is consistent with re-defined
//in <awt.h> "delete" operator
void * operator new(size_t size) {return operator new(size, "stl", 1);}
#endif #endif
#include <map> #include <map>
#pragma pop_macro("bad_alloc")
//"bad_alloc" is undefined from here
#include <awt.h> #include <awt.h>
#include <shlobj.h> #include <shlobj.h>
......
...@@ -758,7 +758,7 @@ AwtTextArea::HandleEvent(MSG *msg, BOOL synthetic) ...@@ -758,7 +758,7 @@ AwtTextArea::HandleEvent(MSG *msg, BOOL synthetic)
si.cbSize = sizeof(SCROLLINFO); si.cbSize = sizeof(SCROLLINFO);
si.fMask = SIF_POS | SIF_RANGE | SIF_PAGE; si.fMask = SIF_POS | SIF_RANGE | SIF_PAGE;
int actualScrollLines = int actualScrollLines =
abs(platfScrollLines * (*delta_accum / WHEEL_DELTA)); abs((int)(platfScrollLines * (*delta_accum / WHEEL_DELTA)));
for (int i = 0; i < actualScrollLines; i++) { for (int i = 0; i < actualScrollLines; i++) {
if (::GetScrollInfo(hWnd, sb_type, &si)) { if (::GetScrollInfo(hWnd, sb_type, &si)) {
if ((wm_msg == WM_VSCROLL) if ((wm_msg == WM_VSCROLL)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册