mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 14:24:46 +02:00
7017824: Add support for creating 64-bit Visual Studio projects
Updated create.bat and ProjectCreator Reviewed-by: brutisso, stefank, ohair
This commit is contained in:
parent
d30b5f01d3
commit
32b46da6e3
21 changed files with 237 additions and 387 deletions
|
@ -1,6 +1,6 @@
|
||||||
@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
|
||||||
|
|
||||||
|
|
||||||
: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
|
||||||
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
|
||||||
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
|
||||||
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\
|
||||||
)
|
)
|
||||||
|
|
||||||
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
|
||||||
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
|
||||||
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
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# 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
|
||||||
!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
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# 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=\
|
||||||
$(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=\
|
||||||
|
|
||||||
# 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=\
|
||||||
-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=\
|
||||||
# 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=\
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# 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
|
||||||
!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"
|
||||||
|
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
// 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
|
|
|
@ -1,15 +0,0 @@
|
||||||
// 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
|
|
|
@ -1,12 +0,0 @@
|
||||||
// Platform file for Itanium Windows platform $Revision: 1.0 $
|
|
||||||
|
|
||||||
os_family = win32
|
|
||||||
|
|
||||||
arch = ia64
|
|
||||||
|
|
||||||
os_arch = win32_ia64
|
|
||||||
|
|
||||||
compiler = visCPP
|
|
||||||
|
|
||||||
gnu_dis_arch = ia64
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#
|
#
|
||||||
# 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)
|
||||||
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"
|
||||||
!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
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* 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 {
|
||||||
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) (
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* 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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
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_");
|
||||||
sysDefines.add("HOTSPOT_LIB_ARCH=\\\"i386\\\"");
|
if (vars.get("PlatformName").equals("Win32")) {
|
||||||
|
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 {
|
||||||
}
|
}
|
||||||
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 {
|
||||||
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);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* 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 {
|
||||||
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 {
|
||||||
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();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* 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 @@
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@SuppressWarnings("serial")
|
||||||
public class FileFormatException extends Exception {
|
public class FileFormatException extends Exception {
|
||||||
|
|
||||||
public FileFormatException() {
|
public FileFormatException() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
/*
|
|
||||||
* 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;
|
|
||||||
}
|
|
|
@ -1,154 +0,0 @@
|
||||||
/*
|
|
||||||
* 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();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* 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
|
||||||
|
@ -47,7 +47,7 @@ public class Util {
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
static String join(String padder, String v[]) {
|
static String join(String padder, String v[]) {
|
||||||
StringBuffer sb = new StringBuffer();
|
StringBuffer sb = new StringBuffer();
|
||||||
|
|
||||||
for (int i=0; i<v.length; i++) {
|
for (int i=0; i<v.length; i++) {
|
||||||
|
@ -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");
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* 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 {
|
||||||
(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 {
|
||||||
|
|
||||||
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,7 +369,13 @@ public abstract class WinGammaPlatform {
|
||||||
HsArgHandler.STRING
|
HsArgHandler.STRING
|
||||||
),
|
),
|
||||||
|
|
||||||
new HsArgRule("-projectFileName",
|
new HsArgRule("-platformName",
|
||||||
|
"PlatformName",
|
||||||
|
null,
|
||||||
|
HsArgHandler.STRING
|
||||||
|
),
|
||||||
|
|
||||||
|
new HsArgRule("-projectFileName",
|
||||||
"ProjectFileName",
|
"ProjectFileName",
|
||||||
null,
|
null,
|
||||||
HsArgHandler.STRING
|
HsArgHandler.STRING
|
||||||
|
@ -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,28 +583,27 @@ 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;
|
allConfigs.add(new C1FastDebugConfig());
|
||||||
if (b) {
|
allConfigs.add(new C1ProductConfig());
|
||||||
allConfigs.add(new C1FastDebugConfig());
|
|
||||||
allConfigs.add(new C1ProductConfig());
|
|
||||||
|
|
||||||
allConfigs.add(new C2DebugConfig());
|
allConfigs.add(new C2DebugConfig());
|
||||||
allConfigs.add(new C2FastDebugConfig());
|
allConfigs.add(new C2FastDebugConfig());
|
||||||
allConfigs.add(new C2ProductConfig());
|
allConfigs.add(new C2ProductConfig());
|
||||||
|
|
||||||
allConfigs.add(new TieredDebugConfig());
|
allConfigs.add(new TieredDebugConfig());
|
||||||
allConfigs.add(new TieredFastDebugConfig());
|
allConfigs.add(new TieredFastDebugConfig());
|
||||||
allConfigs.add(new TieredProductConfig());
|
allConfigs.add(new TieredProductConfig());
|
||||||
|
|
||||||
allConfigs.add(new CoreDebugConfig());
|
allConfigs.add(new CoreDebugConfig());
|
||||||
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());
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* 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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
return "d";
|
return "d";
|
||||||
}
|
}
|
||||||
|
|
||||||
String makeCfgName(String flavourBuild) {
|
String makeCfgName(String flavourBuild, String platform) {
|
||||||
return "vm - "+ Util.os + " " + flavourBuild;
|
return "vm - "+ platform + " " + flavourBuild;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* 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 {
|
||||||
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 {
|
||||||
"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);
|
||||||
|
@ -81,12 +80,47 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform {
|
||||||
|
|
||||||
|
|
||||||
abstract class NameFilter {
|
abstract class NameFilter {
|
||||||
protected String fname;
|
protected String fname;
|
||||||
|
|
||||||
abstract boolean match(FileInfo fi);
|
abstract boolean match(FileInfo fi);
|
||||||
|
|
||||||
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 {
|
||||||
|
@ -109,9 +143,50 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform {
|
||||||
|
|
||||||
|
|
||||||
boolean match(FileInfo fi) {
|
boolean match(FileInfo fi) {
|
||||||
int lastSlashIndex = fi.full.lastIndexOf('/');
|
int lastSlashIndex = fi.full.lastIndexOf('/');
|
||||||
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -232,32 +307,39 @@ public class WinGammaPlatformVC7 extends WinGammaPlatform {
|
||||||
DirectoryFilter container = null;
|
DirectoryFilter container = null;
|
||||||
for(FileInfo fileInfo : files) {
|
for(FileInfo fileInfo : files) {
|
||||||
|
|
||||||
if (!fileInfo.full.startsWith(sbase)) {
|
if (!fileInfo.full.startsWith(sbase)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
int lastSlash = fileInfo.full.lastIndexOf('/');
|
int lastSlash = fileInfo.full.lastIndexOf('/');
|
||||||
String dir = fileInfo.full.substring(sbase.length(), lastSlash);
|
String dir = fileInfo.full.substring(sbase.length(), lastSlash);
|
||||||
if(dir.equals("share/vm")) {
|
if(dir.equals("share/vm")) {
|
||||||
// skip files directly in share/vm - should only be precompiled.hpp which is handled below
|
// skip files directly in share/vm - should only be precompiled.hpp which is handled below
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove "share/vm/" from names
|
// remove "share/vm/" from names
|
||||||
String name = dir;
|
String name = dir;
|
||||||
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
ContainerFilter generated = new ContainerFilter("Generated");
|
ContainerFilter generated = new ContainerFilter("Generated");
|
||||||
|
@ -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 {
|
||||||
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")) {
|
||||||
addAttr(rv, "TargetMachine", "1");
|
// Set /MACHINE option. 1 is X86
|
||||||
|
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 {
|
||||||
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 {
|
||||||
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 {
|
||||||
return "0";
|
return "0";
|
||||||
}
|
}
|
||||||
|
|
||||||
String makeCfgName(String flavourBuild) {
|
String makeCfgName(String flavourBuild, String platform) {
|
||||||
return flavourBuild + "|" + Util.os;
|
return flavourBuild + "|" + platform;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* 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 @@
|
||||||
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
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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 {
|
||||||
// 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); }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue