提交 79b13641 编写于 作者: S sla

7017824: Add support for creating 64-bit Visual Studio projects

Summary: Updated create.bat and ProjectCreator
Reviewed-by: brutisso, stefank, ohair
上级 d17aa0b3
@echo off @echo off
REM REM
REM Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. REM Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
REM REM
REM This code is free software; you can redistribute it and/or modify it REM This code is free software; you can redistribute it and/or modify it
...@@ -50,9 +50,7 @@ goto end ...@@ -50,9 +50,7 @@ goto end
:testit :testit
cl 2>&1 | grep "IA-64" >NUL cl 2>&1 | grep "x64" >NUL
if %errorlevel% == 0 goto isia64
cl 2>&1 | grep "AMD64" >NUL
if %errorlevel% == 0 goto amd64 if %errorlevel% == 0 goto amd64
set ARCH=x86 set ARCH=x86
set BUILDARCH=i486 set BUILDARCH=i486
...@@ -64,12 +62,6 @@ set ARCH=x86 ...@@ -64,12 +62,6 @@ set ARCH=x86
set BUILDARCH=amd64 set BUILDARCH=amd64
set Platform_arch=x86 set Platform_arch=x86
set Platform_arch_model=x86_64 set Platform_arch_model=x86_64
goto done
:isia64
set ARCH=ia64
set BUILDARCH=ia64
set Platform_arch=ia64
set Platform_arch_model=ia64
:done :done
setlocal setlocal
...@@ -81,7 +73,7 @@ if not "%2" == "" goto usage ...@@ -81,7 +73,7 @@ if not "%2" == "" goto usage
REM Set HotSpotWorkSpace to the directy two steps above this script REM Set HotSpotWorkSpace to the directy two steps above this script
for %%i in ("%~dp0..") do ( set HotSpotWorkSpace=%%~dpi) for %%i in ("%~dp0..") do ( set HotSpotWorkSpace=%%~dpi)
set HotSpotBuildRoot=%HotSpotWorkSpace%build set HotSpotBuildRoot=%HotSpotWorkSpace%build
set HotSpotBuildSpace=%HotSpotBuildRoot%\vs set HotSpotBuildSpace=%HotSpotBuildRoot%\vs-%BUILDARCH%
set HotSpotJDKDist=%1 set HotSpotJDKDist=%1
...@@ -89,9 +81,9 @@ REM figure out MSC version ...@@ -89,9 +81,9 @@ REM figure out MSC version
for /F %%i in ('sh %HotSpotWorkSpace%/make/windows/get_msc_ver.sh') do set %%i for /F %%i in ('sh %HotSpotWorkSpace%/make/windows/get_msc_ver.sh') do set %%i
echo ************************************************************** echo **************************************************************
set ProjectFile=jvm.vcproj set ProjectFile=%HotSpotBuildSpace%\jvm.vcproj
if "%MSC_VER%" == "1200" ( if "%MSC_VER%" == "1200" (
set ProjectFile=jvm.dsp set ProjectFile=%HotSpotBuildSpace%\jvm.dsp
echo Will generate VC6 project {unsupported} echo Will generate VC6 project {unsupported}
) else ( ) else (
if "%MSC_VER%" == "1400" ( if "%MSC_VER%" == "1400" (
...@@ -163,7 +155,7 @@ copy %HotSpotWorkSpace%\make\windows\projectfiles\%%i\* %HotSpotBuildSpace%\%%i\ ...@@ -163,7 +155,7 @@ copy %HotSpotWorkSpace%\make\windows\projectfiles\%%i\* %HotSpotBuildSpace%\%%i\
) )
REM force regneration of ProjectFile REM force regneration of ProjectFile
if exist %HotSpotBuildSpace%\%ProjectFile% del %HotSpotBuildSpace%\%ProjectFile% if exist %ProjectFile% del %ProjectFile%
for /D %%i in (compiler1, compiler2, tiered, core, kernel) do ( for /D %%i in (compiler1, compiler2, tiered, core, kernel) do (
echo -- %%i -- echo -- %%i --
...@@ -182,6 +174,7 @@ echo ARCH=%ARCH% >> %HotSpotBuildSpace%\%%i\local.m ...@@ -182,6 +174,7 @@ echo ARCH=%ARCH% >> %HotSpotBuildSpace%\%%i\local.m
echo BUILDARCH=%BUILDARCH% >> %HotSpotBuildSpace%\%%i\local.make echo BUILDARCH=%BUILDARCH% >> %HotSpotBuildSpace%\%%i\local.make
echo Platform_arch=%Platform_arch% >> %HotSpotBuildSpace%\%%i\local.make echo Platform_arch=%Platform_arch% >> %HotSpotBuildSpace%\%%i\local.make
echo Platform_arch_model=%Platform_arch_model% >> %HotSpotBuildSpace%\%%i\local.make echo Platform_arch_model=%Platform_arch_model% >> %HotSpotBuildSpace%\%%i\local.make
echo MSC_VER=%MSC_VER% >> %HotSpotBuildSpace%\%%i\local.make
for /D %%j in (debug, fastdebug, product) do ( for /D %%j in (debug, fastdebug, product) do (
if NOT EXIST %HotSpotBuildSpace%\%%i\%%j mkdir %HotSpotBuildSpace%\%%i\%%j if NOT EXIST %HotSpotBuildSpace%\%%i\%%j mkdir %HotSpotBuildSpace%\%%i\%%j
...@@ -196,7 +189,7 @@ popd ...@@ -196,7 +189,7 @@ popd
pushd %HotSpotBuildRoot% pushd %HotSpotBuildRoot%
REM It doesn't matter which variant we use here, "compiler1" is as good as any of the others - we need the common variables REM It doesn't matter which variant we use here, "compiler1" is as good as any of the others - we need the common variables
nmake /nologo /F %HotSpotWorkSpace%/make/windows/projectfiles/common/Makefile LOCAL_MAKE=%HotSpotBuildSpace%\compiler1\local.make %HotSpotBuildRoot%/%ProjectFile% nmake /nologo /F %HotSpotWorkSpace%/make/windows/projectfiles/common/Makefile LOCAL_MAKE=%HotSpotBuildSpace%\compiler1\local.make %ProjectFile%
popd popd
......
# #
# Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -141,9 +141,6 @@ COMPILER_NAME=VS2010 ...@@ -141,9 +141,6 @@ COMPILER_NAME=VS2010
!endif !endif
!endif !endif
# Add what version of the compiler we think this is to the compile line
CPP_FLAGS=$(CPP_FLAGS) /D "MSC_VER=$(MSC_VER)"
# By default, we do not want to use the debug version of the msvcrt.dll file # By default, we do not want to use the debug version of the msvcrt.dll file
# but if MFC_DEBUG is defined in the environment it will be used. # but if MFC_DEBUG is defined in the environment it will be used.
MS_RUNTIME_OPTION = /MD MS_RUNTIME_OPTION = /MD
......
# #
# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -36,8 +36,6 @@ ProjectCreatorSources=\ ...@@ -36,8 +36,6 @@ ProjectCreatorSources=\
$(WorkSpace)\src\share\tools\ProjectCreator\DirectoryTree.java \ $(WorkSpace)\src\share\tools\ProjectCreator\DirectoryTree.java \
$(WorkSpace)\src\share\tools\ProjectCreator\DirectoryTreeNode.java \ $(WorkSpace)\src\share\tools\ProjectCreator\DirectoryTreeNode.java \
$(WorkSpace)\src\share\tools\ProjectCreator\FileFormatException.java \ $(WorkSpace)\src\share\tools\ProjectCreator\FileFormatException.java \
$(WorkSpace)\src\share\tools\ProjectCreator\Macro.java \
$(WorkSpace)\src\share\tools\ProjectCreator\MacroDefinitions.java \
$(WorkSpace)\src\share\tools\ProjectCreator\ProjectCreator.java \ $(WorkSpace)\src\share\tools\ProjectCreator\ProjectCreator.java \
$(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatform.java \ $(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatform.java \
$(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatformVC6.java \ $(WorkSpace)\src\share\tools\ProjectCreator\WinGammaPlatformVC6.java \
...@@ -50,6 +48,10 @@ ProjectCreatorSources=\ ...@@ -50,6 +48,10 @@ ProjectCreatorSources=\
# This is only used internally # This is only used internally
ProjectCreatorIncludesPRIVATE=\ ProjectCreatorIncludesPRIVATE=\
-relativeInclude src\closed\share\vm \
-relativeInclude src\closed\os\windows\vm \
-relativeInclude src\closed\os_cpu\windows_$(Platform_arch)\vm \
-relativeInclude src\closed\cpu\$(Platform_arch)\vm \
-relativeInclude src\share\vm \ -relativeInclude src\share\vm \
-relativeInclude src\share\vm\prims \ -relativeInclude src\share\vm\prims \
-relativeInclude src\os\windows\vm \ -relativeInclude src\os\windows\vm \
...@@ -84,7 +86,7 @@ ProjectCreatorIDEOptions=\ ...@@ -84,7 +86,7 @@ ProjectCreatorIDEOptions=\
-buildBase $(HOTSPOTBUILDSPACE)\%f\%b \ -buildBase $(HOTSPOTBUILDSPACE)\%f\%b \
-startAt src \ -startAt src \
-compiler $(VcVersion) \ -compiler $(VcVersion) \
-projectFileName $(HOTSPOTBUILDROOT)\$(ProjectFile) \ -projectFileName $(HOTSPOTBUILDSPACE)\$(ProjectFile) \
-jdkTargetRoot $(HOTSPOTJDKDIST) \ -jdkTargetRoot $(HOTSPOTJDKDIST) \
-define ALIGN_STACK_FRAMES \ -define ALIGN_STACK_FRAMES \
-define VM_LITTLE_ENDIAN \ -define VM_LITTLE_ENDIAN \
...@@ -106,13 +108,20 @@ ProjectCreatorIDEOptions=\ ...@@ -106,13 +108,20 @@ ProjectCreatorIDEOptions=\
# Add in build-specific options # Add in build-specific options
!if "$(BUILDARCH)" == "i486" !if "$(BUILDARCH)" == "i486"
ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \ ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
-platformName Win32 \
-define IA32 \ -define IA32 \
-ignorePath x86_64 \ -ignorePath x86_64 \
-define TARGET_ARCH_MODEL_x86_32 -define TARGET_ARCH_MODEL_x86_32
!else !else
!if "$(BUILDARCH)" == "amd64"
ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \ ProjectCreatorIDEOptions=$(ProjectCreatorIDEOptions) \
-platformName x64 \
-define AMD64 \
-define _LP64 \
-ignorePath x86_32 \ -ignorePath x86_32 \
-define TARGET_ARCH_MODEL_x86_64 -define TARGET_ARCH_MODEL_x86_64 \
-define TARGET_OS_ARCH_MODEL_windows_x86_64
!endif
!endif !endif
ProjectCreatorIDEOptionsIgnoreCompiler1=\ ProjectCreatorIDEOptionsIgnoreCompiler1=\
......
# #
# Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -53,7 +53,7 @@ ProjectFile=jvm.vcproj ...@@ -53,7 +53,7 @@ ProjectFile=jvm.vcproj
!if "$(MSC_VER)" == "1200" !if "$(MSC_VER)" == "1200"
VcVersion=VC6 VcVersion=VC6
ProjectFile=vm.dsp ProjectFile=jvm.dsp
!elseif "$(MSC_VER)" == "1400" !elseif "$(MSC_VER)" == "1400"
......
// Platform file for win32 NT platform
os_family = windows
arch = x86
arch_model = x86_64
os_arch = windows_x86
os_arch_model = windows_x86_64
lib_arch = amd64
compiler = visCPP
// Platform file for windows platform
os_family = windows
arch = x86
arch_model = x86_32
os_arch = windows_x86
os_arch_model = windows_x86_32
lib_arch = i386
compiler = visCPP
// Platform file for Itanium Windows platform $Revision: 1.0 $
os_family = win32
arch = ia64
os_arch = win32_ia64
compiler = visCPP
gnu_dis_arch = ia64
# #
# Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. # Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
# #
# This code is free software; you can redistribute it and/or modify it # This code is free software; you can redistribute it and/or modify it
...@@ -54,8 +54,6 @@ BootStrapDir=$(HOTSPOTJDKDIST) ...@@ -54,8 +54,6 @@ BootStrapDir=$(HOTSPOTJDKDIST)
JvmtiOutDir=$(HOTSPOTBUILDSPACE)\$(Variant)\generated\jvmtifiles JvmtiOutDir=$(HOTSPOTBUILDSPACE)\$(Variant)\generated\jvmtifiles
!include $(HOTSPOTWORKSPACE)/make/windows/makefiles/jvmti.make !include $(HOTSPOTWORKSPACE)/make/windows/makefiles/jvmti.make
Platform=$(HOTSPOTWORKSPACE)/make/windows/platform_$(BUILDARCH)
!if "$(Variant)" == "compiler2" !if "$(Variant)" == "compiler2"
# Pick up rules for building adlc # Pick up rules for building adlc
!include $(HOTSPOTWORKSPACE)/make/windows/makefiles/adlc.make !include $(HOTSPOTWORKSPACE)/make/windows/makefiles/adlc.make
...@@ -105,17 +103,16 @@ HOTSPOT_VM_DISTRO="OpenJDK" ...@@ -105,17 +103,16 @@ HOTSPOT_VM_DISTRO="OpenJDK"
!endif !endif
ProjectCreatorIDEOptions = $(ProjectCreatorIDEOptions) \ ProjectCreatorIDEOptions = $(ProjectCreatorIDEOptions) \
-platform $(Platform) \
-define HOTSPOT_RELEASE_VERSION=\\\"$(HOTSPOT_RELEASE_VERSION)\\\" \ -define HOTSPOT_RELEASE_VERSION=\\\"$(HOTSPOT_RELEASE_VERSION)\\\" \
-define JRE_RELEASE_VERSION=\\\"$(JRE_RELEASE_VERSION)\\\" \ -define JRE_RELEASE_VERSION=\\\"$(JRE_RELEASE_VERSION)\\\" \
-define HOTSPOT_VM_DISTRO=\\\"$(HOTSPOT_VM_DISTRO)\\\" -define HOTSPOT_VM_DISTRO=\\\"$(HOTSPOT_VM_DISTRO)\\\"
$(HOTSPOTBUILDROOT)/$(ProjectFile): $(HOTSPOTBUILDSPACE)/classes/ProjectCreator.class $(HOTSPOTBUILDSPACE)/$(ProjectFile): $(HOTSPOTBUILDSPACE)/classes/ProjectCreator.class
@$(RUN_JAVA) -Djava.class.path=$(HOTSPOTBUILDSPACE)/classes ProjectCreator WinGammaPlatform$(VcVersion) $(ProjectCreatorIDEOptions) @$(RUN_JAVA) -Djava.class.path=$(HOTSPOTBUILDSPACE)/classes ProjectCreator WinGammaPlatform$(VcVersion) $(ProjectCreatorIDEOptions)
clean: clean:
@rm -rf $(HOTSPOTBUILDSPACE)/classes @rm -rf $(HOTSPOTBUILDSPACE)/classes
@rm -r ../$(ProjectFile) @rm -r $(HOTSPOTBUILDSPACE)/$(ProjectFile)
$(HOTSPOTBUILDSPACE)/classes/ProjectCreator.class: $(ProjectCreatorSources) $(HOTSPOTBUILDSPACE)/classes/ProjectCreator.class: $(ProjectCreatorSources)
@if exist $(HOTSPOTBUILDSPACE)\classes rmdir /s /q $(HOTSPOTBUILDSPACE)\classes @if exist $(HOTSPOTBUILDSPACE)\classes rmdir /s /q $(HOTSPOTBUILDSPACE)\classes
......
/* /*
* Copyright (c) 2004, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2004, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -71,7 +71,7 @@ typedef struct _DISPATCHER_CONTEXT { ...@@ -71,7 +71,7 @@ typedef struct _DISPATCHER_CONTEXT {
PVOID HandlerData; PVOID HandlerData;
} DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT; } DISPATCHER_CONTEXT, *PDISPATCHER_CONTEXT;
#if MSC_VER < 1500 #if _MSC_VER < 1500
/* Not needed for VS2008 compiler, comes from winnt.h. */ /* Not needed for VS2008 compiler, comes from winnt.h. */
typedef EXCEPTION_DISPOSITION (*PEXCEPTION_ROUTINE) ( typedef EXCEPTION_DISPOSITION (*PEXCEPTION_ROUTINE) (
......
/* /*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -51,12 +51,14 @@ class BuildConfig { ...@@ -51,12 +51,14 @@ class BuildConfig {
if (vars == null) vars = new Hashtable(); if (vars == null) vars = new Hashtable();
String flavourBuild = flavour + "_" + build; String flavourBuild = flavour + "_" + build;
String platformName = getFieldString(null, "PlatformName");
System.out.println(); System.out.println();
System.out.println(flavourBuild); System.out.println(flavourBuild);
put("Name", getCI().makeCfgName(flavourBuild)); put("Name", getCI().makeCfgName(flavourBuild, platformName));
put("Flavour", flavour); put("Flavour", flavour);
put("Build", build); put("Build", build);
put("PlatformName", platformName);
// ones mentioned above were needed to expand format // ones mentioned above were needed to expand format
String buildBase = expandFormat(getFieldString(null, "BuildBase")); String buildBase = expandFormat(getFieldString(null, "BuildBase"));
...@@ -93,7 +95,7 @@ class BuildConfig { ...@@ -93,7 +95,7 @@ class BuildConfig {
protected void initDefaultLinkerFlags() { protected void initDefaultLinkerFlags() {
Vector linkerFlags = new Vector(); Vector linkerFlags = new Vector();
linkerFlags.addAll(getCI().getBaseLinkerFlags( get("OutputDir"), get("OutputDll"))); linkerFlags.addAll(getCI().getBaseLinkerFlags( get("OutputDir"), get("OutputDll"), get("PlatformName")));
put("LinkerFlags", linkerFlags); put("LinkerFlags", linkerFlags);
} }
...@@ -115,18 +117,15 @@ class BuildConfig { ...@@ -115,18 +117,15 @@ class BuildConfig {
} }
Vector getPreferredPaths(MacroDefinitions macros) { Vector getPreferredPaths() {
Vector preferredPaths = new Vector(); Vector preferredPaths = new Vector();
// In the case of multiple files with the same name in // In the case of multiple files with the same name in
// different subdirectories, prefer the versions specified in // different subdirectories, prefer these versions
// the platform file as the "os_family" and "arch" macros. preferredPaths.add("windows");
for (Iterator iter = macros.getMacros(); iter.hasNext(); ) { preferredPaths.add("x86");
Macro macro = (Macro) iter.next(); preferredPaths.add("closed");
if (macro.name.equals("os_family") ||
macro.name.equals("arch")) {
preferredPaths.add(macro.contents);
}
}
// Also prefer "opto" over "adlc" for adlcVMDeps.hpp // Also prefer "opto" over "adlc" for adlcVMDeps.hpp
preferredPaths.add("opto"); preferredPaths.add("opto");
...@@ -137,18 +136,7 @@ class BuildConfig { ...@@ -137,18 +136,7 @@ class BuildConfig {
void handleDB() { void handleDB() {
WinGammaPlatform platform = (WinGammaPlatform)getField(null, "PlatformObject"); WinGammaPlatform platform = (WinGammaPlatform)getField(null, "PlatformObject");
File incls = new File(get("OutputDir")+Util.sep+"incls"); putSpecificField("AllFilesHash", computeAllFiles(platform));
incls.mkdirs();
MacroDefinitions macros = new MacroDefinitions();
try {
macros.readFrom(getFieldString(null, "Platform"), false);
} catch (Exception e) {
throw new RuntimeException(e);
}
putSpecificField("AllFilesHash", computeAllFiles(platform, macros));
} }
...@@ -190,10 +178,10 @@ class BuildConfig { ...@@ -190,10 +178,10 @@ class BuildConfig {
ht.put(expandFormat(key), expandFormat(value)); ht.put(expandFormat(key), expandFormat(value));
} }
Hashtable computeAllFiles(WinGammaPlatform platform, MacroDefinitions macros) { Hashtable computeAllFiles(WinGammaPlatform platform) {
Hashtable rv = new Hashtable(); Hashtable rv = new Hashtable();
DirectoryTree tree = getSourceTree(get("SourceBase"), getFieldString(null, "StartAt")); DirectoryTree tree = getSourceTree(get("SourceBase"), getFieldString(null, "StartAt"));
Vector preferredPaths = getPreferredPaths(macros); Vector preferredPaths = getPreferredPaths();
// Hold errors until end // Hold errors until end
Vector filesNotFound = new Vector(); Vector filesNotFound = new Vector();
...@@ -228,8 +216,7 @@ class BuildConfig { ...@@ -228,8 +216,7 @@ class BuildConfig {
System.err.println("Error: some files were not found or " + System.err.println("Error: some files were not found or " +
"appeared in multiple subdirectories of " + "appeared in multiple subdirectories of " +
"directory " + get("SourceBase") + " and could not " + "directory " + get("SourceBase") + " and could not " +
"be resolved with the os_family and arch " + "be resolved with os_family and arch.");
"macros in the platform file.");
if (filesNotFound.size() != 0) { if (filesNotFound.size() != 0) {
System.err.println("Files not found:"); System.err.println("Files not found:");
for (Iterator iter = filesNotFound.iterator(); for (Iterator iter = filesNotFound.iterator();
...@@ -254,10 +241,14 @@ class BuildConfig { ...@@ -254,10 +241,14 @@ class BuildConfig {
Vector sysDefines = new Vector(); Vector sysDefines = new Vector();
sysDefines.add("WIN32"); sysDefines.add("WIN32");
sysDefines.add("_WINDOWS"); sysDefines.add("_WINDOWS");
sysDefines.add("HOTSPOT_BUILD_USER="+System.getProperty("user.name")); sysDefines.add("HOTSPOT_BUILD_USER=\\\""+System.getProperty("user.name")+"\\\"");
sysDefines.add("HOTSPOT_BUILD_TARGET=\\\""+get("Build")+"\\\""); sysDefines.add("HOTSPOT_BUILD_TARGET=\\\""+get("Build")+"\\\"");
sysDefines.add("_JNI_IMPLEMENTATION_"); sysDefines.add("_JNI_IMPLEMENTATION_");
if (vars.get("PlatformName").equals("Win32")) {
sysDefines.add("HOTSPOT_LIB_ARCH=\\\"i386\\\""); sysDefines.add("HOTSPOT_LIB_ARCH=\\\"i386\\\"");
} else {
sysDefines.add("HOTSPOT_LIB_ARCH=\\\"amd64\\\"");
}
sysDefines.addAll(defines); sysDefines.addAll(defines);
...@@ -710,7 +701,7 @@ class KernelProductConfig extends ProductConfig { ...@@ -710,7 +701,7 @@ class KernelProductConfig extends ProductConfig {
} }
abstract class CompilerInterface { abstract class CompilerInterface {
abstract Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir); abstract Vector getBaseCompilerFlags(Vector defines, Vector includes, String outDir);
abstract Vector getBaseLinkerFlags(String outDir, String outDll); abstract Vector getBaseLinkerFlags(String outDir, String outDll, String platformName);
abstract Vector getDebugCompilerFlags(String opt); abstract Vector getDebugCompilerFlags(String opt);
abstract Vector getDebugLinkerFlags(); abstract Vector getDebugLinkerFlags();
abstract void getAdditionalNonKernelLinkerFlags(Vector rv); abstract void getAdditionalNonKernelLinkerFlags(Vector rv);
...@@ -718,7 +709,7 @@ abstract class CompilerInterface { ...@@ -718,7 +709,7 @@ abstract class CompilerInterface {
abstract Vector getProductLinkerFlags(); abstract Vector getProductLinkerFlags();
abstract String getOptFlag(); abstract String getOptFlag();
abstract String getNoOptFlag(); abstract String getNoOptFlag();
abstract String makeCfgName(String flavourBuild); abstract String makeCfgName(String flavourBuild, String platformName);
void addAttr(Vector receiver, String attr, String value) { void addAttr(Vector receiver, String attr, String value) {
receiver.add(attr); receiver.add(value); receiver.add(attr); receiver.add(value);
......
/* /*
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -55,6 +55,9 @@ public class DirectoryTree { ...@@ -55,6 +55,9 @@ public class DirectoryTree {
private Vector nodes = new Vector(); private Vector nodes = new Vector();
public FileIterator(Node rootNode) { public FileIterator(Node rootNode) {
if(rootNode == null) {
return;
}
nodes.add(rootNode); nodes.add(rootNode);
prune(); prune();
} }
...@@ -112,10 +115,7 @@ public class DirectoryTree { ...@@ -112,10 +115,7 @@ public class DirectoryTree {
throws IllegalArgumentException { throws IllegalArgumentException {
File root = new File(Util.normalize(baseDirectory)); File root = new File(Util.normalize(baseDirectory));
if (!root.isDirectory()) { if (!root.isDirectory()) {
throw new IllegalArgumentException("baseDirectory \"" + return;
baseDirectory +
"\" does not exist or " +
"is not a directory");
} }
try { try {
root = root.getCanonicalFile(); root = root.getCanonicalFile();
......
/* /*
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -22,7 +22,9 @@ ...@@ -22,7 +22,9 @@
* *
*/ */
@SuppressWarnings("serial")
public class FileFormatException extends Exception { public class FileFormatException extends Exception {
public FileFormatException() { public FileFormatException() {
super(); super();
} }
......
/*
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
* 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
* published by the Free Software Foundation.
*
* 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.
*
* 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.
*
*/
public class Macro {
public String name;
public String contents;
}
/*
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved.
* 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
* published by the Free Software Foundation.
*
* 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.
*
* 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.
*
*/
import java.io.*;
import java.util.*;
public class MacroDefinitions {
private Vector macros;
public MacroDefinitions() {
macros = new Vector();
}
public void addMacro(String name, String contents) {
Macro macro = new Macro();
macro.name = name;
macro.contents = contents;
macros.add(macro);
}
private boolean lineIsEmpty(String s) {
for (int i = 0; i < s.length(); i++) {
if (!Character.isWhitespace(s.charAt(i))) {
return false;
}
}
return true;
}
public void readFrom(String fileName, boolean missingOk)
throws FileNotFoundException, FileFormatException, IOException {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(fileName));
} catch (FileNotFoundException e) {
if (missingOk) {
return;
} else {
throw(e);
}
}
String line;
do {
line = reader.readLine();
if (line != null) {
// This had to be rewritten (compare to Database.java)
// because the Solaris platform file has been
// repurposed and now contains "macros" with spaces in
// them.
if ((!line.startsWith("//")) &&
(!lineIsEmpty(line))) {
int nameBegin = -1;
int nameEnd = -1;
boolean gotEquals = false;
int contentsBegin = -1;
int contentsEnd = -1;
int i = 0;
// Scan forward for beginning of name
while (i < line.length()) {
if (!Character.isWhitespace(line.charAt(i))) {
break;
}
i++;
}
nameBegin = i;
// Scan forward for end of name
while (i < line.length()) {
if (Character.isWhitespace(line.charAt(i))) {
break;
}
i++;
}
nameEnd = i;
// Scan forward for equals sign
while (i < line.length()) {
if (line.charAt(i) == '=') {
gotEquals = true;
break;
}
i++;
}
// Scan forward for start of contents
i++;
while (i < line.length()) {
if (!Character.isWhitespace(line.charAt(i))) {
break;
}
i++;
}
contentsBegin = i;
// Scan *backward* for end of contents
i = line.length() - 1;
while (i >= 0) {
if (!Character.isWhitespace(line.charAt(i))) {
break;
}
}
contentsEnd = i+1;
// Now do consistency check
if (!((nameBegin < nameEnd) &&
(nameEnd < contentsBegin) &&
(contentsBegin < contentsEnd) &&
(gotEquals == true))) {
throw new FileFormatException(
"Expected \"macroname = value\", " +
"but found: " + line
);
}
String name = line.substring(nameBegin, nameEnd);
String contents = line.substring(contentsBegin,
contentsEnd);
addMacro(name, contents);
}
}
} while (line != null);
reader.close();
}
/** This returns an Iterator of Macros. You should not mutate the
returned Macro objects or use the Iterator to remove
macros. */
public Iterator getMacros() {
return macros.iterator();
}
}
/* /*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -80,9 +80,16 @@ public class Util { ...@@ -80,9 +80,16 @@ public class Util {
static String normalize(String file) { static String normalize(String file) {
return file.replace('\\', '/'); file = file.replace('\\', '/');
if (file.length() > 2) {
if (file.charAt(1) == ':' && file.charAt(2) == '/') {
// convert drive letter to uppercase
String drive = file.substring(0, 1).toUpperCase();
return drive + file.substring(1);
}
}
return file;
} }
static String sep = File.separator; static String sep = File.separator;
static String os = "Win32"; //System.getProperty("os.name");
} }
/* /*
* Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -235,13 +235,6 @@ public abstract class WinGammaPlatform { ...@@ -235,13 +235,6 @@ public abstract class WinGammaPlatform {
(locationsInTree.size() == 0)) { (locationsInTree.size() == 0)) {
filesNotFound.add(fileName); filesNotFound.add(fileName);
} else if (locationsInTree.size() > 1) { } else if (locationsInTree.size() > 1) {
// We shouldn't have duplicate file names in our workspace.
System.err.println();
System.err.println("There are multiple files named as: " + fileName);
System.exit(-1);
// The following code could be safely removed if we don't need duplicate
// file names.
// Iterate through them, trying to find one with a // Iterate through them, trying to find one with a
// preferred path // preferred path
search: search:
...@@ -336,7 +329,7 @@ public abstract class WinGammaPlatform { ...@@ -336,7 +329,7 @@ public abstract class WinGammaPlatform {
String projectName = getProjectName(projectFileName, ext); String projectName = getProjectName(projectFileName, ext);
writeProjectFile(projectFileName, projectName, createAllConfigs()); writeProjectFile(projectFileName, projectName, createAllConfigs(BuildConfig.getFieldString(null, "PlatformName")));
} }
protected void writePrologue(String[] args) { protected void writePrologue(String[] args) {
...@@ -376,6 +369,12 @@ public abstract class WinGammaPlatform { ...@@ -376,6 +369,12 @@ public abstract class WinGammaPlatform {
HsArgHandler.STRING HsArgHandler.STRING
), ),
new HsArgRule("-platformName",
"PlatformName",
null,
HsArgHandler.STRING
),
new HsArgRule("-projectFileName", new HsArgRule("-projectFileName",
"ProjectFileName", "ProjectFileName",
null, null,
...@@ -394,12 +393,6 @@ public abstract class WinGammaPlatform { ...@@ -394,12 +393,6 @@ public abstract class WinGammaPlatform {
HsArgHandler.STRING HsArgHandler.STRING
), ),
new HsArgRule("-platform",
"Platform",
null,
HsArgHandler.STRING
),
new HsArgRule("-absoluteInclude", new HsArgRule("-absoluteInclude",
"AbsoluteInclude", "AbsoluteInclude",
null, null,
...@@ -590,13 +583,11 @@ public abstract class WinGammaPlatform { ...@@ -590,13 +583,11 @@ public abstract class WinGammaPlatform {
BuildConfig.putField(null, "PlatformObject", this); BuildConfig.putField(null, "PlatformObject", this);
} }
Vector createAllConfigs() { Vector createAllConfigs(String platform) {
Vector allConfigs = new Vector(); Vector allConfigs = new Vector();
allConfigs.add(new C1DebugConfig()); allConfigs.add(new C1DebugConfig());
boolean b = true;
if (b) {
allConfigs.add(new C1FastDebugConfig()); allConfigs.add(new C1FastDebugConfig());
allConfigs.add(new C1ProductConfig()); allConfigs.add(new C1ProductConfig());
...@@ -612,6 +603,7 @@ public abstract class WinGammaPlatform { ...@@ -612,6 +603,7 @@ public abstract class WinGammaPlatform {
allConfigs.add(new CoreFastDebugConfig()); allConfigs.add(new CoreFastDebugConfig());
allConfigs.add(new CoreProductConfig()); allConfigs.add(new CoreProductConfig());
if (platform.equals("Win32")) {
allConfigs.add(new KernelDebugConfig()); allConfigs.add(new KernelDebugConfig());
allConfigs.add(new KernelFastDebugConfig()); allConfigs.add(new KernelFastDebugConfig());
allConfigs.add(new KernelProductConfig()); allConfigs.add(new KernelProductConfig());
......
/* /*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -223,7 +223,7 @@ class CompilerInterfaceVC6 extends CompilerInterface { ...@@ -223,7 +223,7 @@ class CompilerInterfaceVC6 extends CompilerInterface {
return rv; return rv;
} }
Vector getBaseLinkerFlags(String outDir, String outDll) { Vector getBaseLinkerFlags(String outDir, String outDll, String platformName) {
Vector rv = new Vector(); Vector rv = new Vector();
rv.add("PROP Ignore_Export_Lib 0"); rv.add("PROP Ignore_Export_Lib 0");
...@@ -231,8 +231,12 @@ class CompilerInterfaceVC6 extends CompilerInterface { ...@@ -231,8 +231,12 @@ class CompilerInterfaceVC6 extends CompilerInterface {
rv.add("ADD CPP /MD"); rv.add("ADD CPP /MD");
rv.add("ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib " + rv.add("ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib " +
" advapi32.lib shell32.lib ole32.lib oleaut32.lib winmm.lib"); " advapi32.lib shell32.lib ole32.lib oleaut32.lib winmm.lib");
String machine = "/machine:I386";
if (platformName.equals("x64")) {
machine = "/machine:X64";
}
rv.add("ADD LINK32 /out:\""+outDll+"\" "+ rv.add("ADD LINK32 /out:\""+outDll+"\" "+
" /nologo /subsystem:windows /machine:I386" + " /nologo /subsystem:windows /machine:" + machine +
" /nologo /base:\"0x8000000\" /subsystem:windows /dll" + " /nologo /base:\"0x8000000\" /subsystem:windows /dll" +
" /export:JNI_GetDefaultJavaVMInitArgs /export:JNI_CreateJavaVM /export:JNI_GetCreatedJavaVMs "+ " /export:JNI_GetDefaultJavaVMInitArgs /export:JNI_CreateJavaVM /export:JNI_GetCreatedJavaVMs "+
" /export:jio_snprintf /export:jio_printf /export:jio_fprintf /export:jio_vfprintf "+ " /export:jio_snprintf /export:jio_printf /export:jio_fprintf /export:jio_vfprintf "+
...@@ -287,7 +291,7 @@ class CompilerInterfaceVC6 extends CompilerInterface { ...@@ -287,7 +291,7 @@ class CompilerInterfaceVC6 extends CompilerInterface {
return "d"; return "d";
} }
String makeCfgName(String flavourBuild) { String makeCfgName(String flavourBuild, String platform) {
return "vm - "+ Util.os + " " + flavourBuild; return "vm - "+ platform + " " + flavourBuild;
} }
} }
/* /*
* Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -37,7 +37,7 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform { ...@@ -37,7 +37,7 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform {
public void writeProjectFile(String projectFileName, String projectName, public void writeProjectFile(String projectFileName, String projectName,
Vector allConfigs) throws IOException { Vector allConfigs) throws IOException {
System.out.println(); System.out.println();
System.out.println(" Writing .vcproj file..."); System.out.println(" Writing .vcproj file: "+projectFileName);
// If we got this far without an error, we're safe to actually // If we got this far without an error, we're safe to actually
// write the .vcproj file // write the .vcproj file
printWriter = new PrintWriter(new FileWriter(projectFileName)); printWriter = new PrintWriter(new FileWriter(projectFileName));
...@@ -54,9 +54,8 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform { ...@@ -54,9 +54,8 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform {
"SccLocalPath", "" "SccLocalPath", ""
} }
); );
startTag("Platforms", null); startTag("Platforms", null);
tag("Platform", new String[] {"Name", Util.os}); tag("Platform", new String[] {"Name", (String) BuildConfig.getField(null, "PlatformName")});
endTag("Platforms"); endTag("Platforms");
startTag("Configurations", null); startTag("Configurations", null);
...@@ -87,6 +86,41 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform { ...@@ -87,6 +86,41 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform {
String filterString() { return ""; } String filterString() { return ""; }
String name() { return this.fname;} String name() { return this.fname;}
@Override
// eclipse auto-generated
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + getOuterType().hashCode();
result = prime * result + ((fname == null) ? 0 : fname.hashCode());
return result;
}
@Override
// eclipse auto-generated
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
NameFilter other = (NameFilter) obj;
if (!getOuterType().equals(other.getOuterType()))
return false;
if (fname == null) {
if (other.fname != null)
return false;
} else if (!fname.equals(other.fname))
return false;
return true;
}
// eclipse auto-generated
private WinGammaPlatformVC7 getOuterType() {
return WinGammaPlatformVC7.this;
}
} }
class DirectoryFilter extends NameFilter { class DirectoryFilter extends NameFilter {
...@@ -113,6 +147,47 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform { ...@@ -113,6 +147,47 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform {
String fullDir = fi.full.substring(0, lastSlashIndex); String fullDir = fi.full.substring(0, lastSlashIndex);
return fullDir.endsWith(dir); return fullDir.endsWith(dir);
} }
@Override
// eclipse auto-generated
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + getOuterType().hashCode();
result = prime * result + baseLen;
result = prime * result + ((dir == null) ? 0 : dir.hashCode());
result = prime * result + dirLen;
return result;
}
@Override
// eclipse auto-generated
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
DirectoryFilter other = (DirectoryFilter) obj;
if (!getOuterType().equals(other.getOuterType()))
return false;
if (baseLen != other.baseLen)
return false;
if (dir == null) {
if (other.dir != null)
return false;
} else if (!dir.equals(other.dir))
return false;
if (dirLen != other.dirLen)
return false;
return true;
}
// eclipse auto-generated
private WinGammaPlatformVC7 getOuterType() {
return WinGammaPlatformVC7.this;
}
} }
class TypeFilter extends NameFilter { class TypeFilter extends NameFilter {
...@@ -244,7 +319,7 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform { ...@@ -244,7 +319,7 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform {
} }
if (!dir.equals(currentDir)) { if (!dir.equals(currentDir)) {
currentDir = dir; currentDir = dir;
if (container != null) { if (container != null && !rv.contains(container)) {
rv.add(container); rv.add(container);
} }
...@@ -253,10 +328,17 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform { ...@@ -253,10 +328,17 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform {
if (dir.startsWith("share/vm/")) { if (dir.startsWith("share/vm/")) {
name = dir.substring("share/vm/".length(), dir.length()); name = dir.substring("share/vm/".length(), dir.length());
} }
container = new DirectoryFilter(name, dir, sbase); DirectoryFilter newfilter = new DirectoryFilter(name, dir, sbase);
int i = rv.indexOf(newfilter);
if(i == -1) {
container = newfilter;
} else {
// if the filter already exists, reuse it
container = (DirectoryFilter) rv.get(i);
}
} }
} }
if (container != null) { if (container != null && !rv.contains(container)) {
rv.add(container); rv.add(container);
} }
...@@ -583,7 +665,7 @@ class CompilerInterfaceVC7 extends CompilerInterface { ...@@ -583,7 +665,7 @@ class CompilerInterfaceVC7 extends CompilerInterface {
return rv; return rv;
} }
Vector getBaseLinkerFlags(String outDir, String outDll) { Vector getBaseLinkerFlags(String outDir, String outDll, String platformName) {
Vector rv = new Vector(); Vector rv = new Vector();
addAttr(rv, "Name", "VCLinkerTool"); addAttr(rv, "Name", "VCLinkerTool");
...@@ -610,8 +692,13 @@ class CompilerInterfaceVC7 extends CompilerInterface { ...@@ -610,8 +692,13 @@ class CompilerInterfaceVC7 extends CompilerInterface {
addAttr(rv, "SubSystem", "2"); addAttr(rv, "SubSystem", "2");
addAttr(rv, "BaseAddress", "0x8000000"); addAttr(rv, "BaseAddress", "0x8000000");
addAttr(rv, "ImportLibrary", outDir+Util.sep+"jvm.lib"); addAttr(rv, "ImportLibrary", outDir+Util.sep+"jvm.lib");
// Set /MACHINE option. 1 is machineX86 if(platformName.equals("Win32")) {
// Set /MACHINE option. 1 is X86
addAttr(rv, "TargetMachine", "1"); addAttr(rv, "TargetMachine", "1");
} else {
// Set /MACHINE option. 17 is X64
addAttr(rv, "TargetMachine", "17");
}
return rv; return rv;
} }
...@@ -656,12 +743,6 @@ class CompilerInterfaceVC7 extends CompilerInterface { ...@@ -656,12 +743,6 @@ class CompilerInterfaceVC7 extends CompilerInterface {
addAttr(rv, "Optimization", "2"); addAttr(rv, "Optimization", "2");
// Set /Oy- option // Set /Oy- option
addAttr(rv, "OmitFramePointers", "FALSE"); addAttr(rv, "OmitFramePointers", "FALSE");
}
Vector getProductCompilerFlags() {
Vector rv = new Vector();
getProductCompilerFlags_common(rv);
// Set /Ob option. 1 is expandOnlyInline // Set /Ob option. 1 is expandOnlyInline
addAttr(rv, "InlineFunctionExpansion", "1"); addAttr(rv, "InlineFunctionExpansion", "1");
// Set /GF option. // Set /GF option.
...@@ -670,6 +751,12 @@ class CompilerInterfaceVC7 extends CompilerInterface { ...@@ -670,6 +751,12 @@ class CompilerInterfaceVC7 extends CompilerInterface {
addAttr(rv, "RuntimeLibrary", "2"); addAttr(rv, "RuntimeLibrary", "2");
// Set /Gy option // Set /Gy option
addAttr(rv, "EnableFunctionLevelLinking", "TRUE"); addAttr(rv, "EnableFunctionLevelLinking", "TRUE");
}
Vector getProductCompilerFlags() {
Vector rv = new Vector();
getProductCompilerFlags_common(rv);
return rv; return rv;
} }
...@@ -693,7 +780,7 @@ class CompilerInterfaceVC7 extends CompilerInterface { ...@@ -693,7 +780,7 @@ class CompilerInterfaceVC7 extends CompilerInterface {
return "0"; return "0";
} }
String makeCfgName(String flavourBuild) { String makeCfgName(String flavourBuild, String platform) {
return flavourBuild + "|" + Util.os; return flavourBuild + "|" + platform;
} }
} }
/* /*
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -42,11 +42,6 @@ ...@@ -42,11 +42,6 @@
using namespace std; using namespace std;
#endif #endif
// make sure the MSC_VER and _MSC_VER settings make sense
#if _MSC_VER != MSC_VER && (_MSC_VER != 1400 || MSC_VER != 1399)
#error "Something is wrong with the detection of MSC_VER in the makefiles"
#endif
#if _MSC_VER >= 1400 #if _MSC_VER >= 1400
#define strdup _strdup #define strdup _strdup
#endif #endif
......
...@@ -1372,7 +1372,7 @@ void CompressedLineNumberWriteStream::write_pair_regular(int bci_delta, int line ...@@ -1372,7 +1372,7 @@ void CompressedLineNumberWriteStream::write_pair_regular(int bci_delta, int line
} }
// See comment in methodOop.hpp which explains why this exists. // See comment in methodOop.hpp which explains why this exists.
#if defined(_M_AMD64) && MSC_VER >= 1400 #if defined(_M_AMD64) && _MSC_VER >= 1400
#pragma optimize("", off) #pragma optimize("", off)
void CompressedLineNumberWriteStream::write_pair(int bci, int line) { void CompressedLineNumberWriteStream::write_pair(int bci, int line) {
write_pair_inline(bci, line); write_pair_inline(bci, line);
......
...@@ -732,8 +732,8 @@ class CompressedLineNumberWriteStream: public CompressedWriteStream { ...@@ -732,8 +732,8 @@ class CompressedLineNumberWriteStream: public CompressedWriteStream {
// Disabling optimization doesn't work for methods in header files // Disabling optimization doesn't work for methods in header files
// so we force it to call through the non-optimized version in the .cpp. // so we force it to call through the non-optimized version in the .cpp.
// It's gross, but it's the only way we can ensure that all callers are // It's gross, but it's the only way we can ensure that all callers are
// fixed. MSC_VER is defined in build/windows/makefiles/compile.make. // fixed. _MSC_VER is defined by the windows compiler
#if defined(_M_AMD64) && MSC_VER >= 1400 #if defined(_M_AMD64) && _MSC_VER >= 1400
void write_pair(int bci, int line); void write_pair(int bci, int line);
#else #else
void write_pair(int bci, int line) { write_pair_inline(bci, line); } void write_pair(int bci, int line) { write_pair_inline(bci, line); }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册