1 @echo off 2 REM 3 REM Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 4 REM DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5 REM 6 REM This code is free software; you can redistribute it and/or modify it 7 REM under the terms of the GNU General Public License version 2 only, as 8 REM published by the Free Software Foundation. 9 REM 10 REM This code is distributed in the hope that it will be useful, but WITHOUT 11 REM ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 12 REM FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13 REM version 2 for more details (a copy is included in the LICENSE file that 14 REM accompanied this code). 15 REM 16 REM You should have received a copy of the GNU General Public License version 17 REM 2 along with this work; if not, write to the Free Software Foundation, 18 REM Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19 REM 20 REM Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 21 REM or visit www.oracle.com if you need additional information or have any 22 REM questions. 23 REM 24 REM 25 26 REM This is the interactive build setup script (as opposed to the batch 27 REM build execution script). It creates $HotSpotBuildSpace if necessary, 28 REM copies the appropriate files out of $HotSpotWorkSpace into it, and 29 REM builds and runs ProjectCreator in it. This has the side-effect of creating 30 REM the vm.vcproj file in the buildspace, which is then used in Visual C++. 31 32 REM 33 REM Since we don't have uname and we could be cross-compiling, 34 REM Use the compiler to determine which ARCH we are building 35 REM 36 REM Note: Running this batch file from the Windows command shell requires 37 REM that "grep" be accessible on the PATH. An MKS install does this. 38 REM 39 40 cl 2>NUL >NUL 41 if %errorlevel% == 0 goto nexttest 42 echo Make sure cl.exe is in your PATH before running this script. 43 goto end 44 45 :nexttest 46 grep -V 2>NUL >NUL 47 if %errorlevel% == 0 goto testit 48 echo Make sure grep.exe is in your PATH before running this script. Either cygwin or MKS should work. 49 goto end 50 51 52 :testit 53 cl 2>&1 | grep "IA-64" >NUL 54 if %errorlevel% == 0 goto isia64 55 cl 2>&1 | grep "AMD64" >NUL 56 if %errorlevel% == 0 goto amd64 57 set ARCH=x86 58 set BUILDARCH=i486 59 set Platform_arch=x86 60 set Platform_arch_model=x86_32 61 goto done 62 :amd64 63 set ARCH=x86 64 set BUILDARCH=amd64 65 set Platform_arch=x86 66 set Platform_arch_model=x86_64 67 goto done 68 :isia64 69 set ARCH=ia64 70 set BUILDARCH=ia64 71 set Platform_arch=ia64 72 set Platform_arch_model=ia64 73 :done 74 75 setlocal 76 77 if "%1" == "" goto usage 78 79 if not "%2" == "" goto usage 80 81 REM Set HotSpotWorkSpace to the directy two steps above this script 82 for %%i in ("%~dp0..") do ( set HotSpotWorkSpace=%%~dpi) 83 set HotSpotBuildRoot=%HotSpotWorkSpace%build 84 set HotSpotBuildSpace=%HotSpotBuildRoot%\vs 85 set HotSpotJDKDist=%1 86 87 88 REM figure out MSC version 89 for /F %%i in ('sh %HotSpotWorkSpace%/make/windows/get_msc_ver.sh') do set %%i 90 91 echo ************************************************************** 92 set ProjectFile=jvm.vcproj 93 if "%MSC_VER%" == "1200" ( 94 set ProjectFile=jvm.dsp 95 echo Will generate VC6 project {unsupported} 96 ) else ( 97 if "%MSC_VER%" == "1400" ( 98 echo Will generate VC8 {Visual Studio 2005} 99 ) else ( 100 if "%MSC_VER%" == "1500" ( 101 echo Will generate VC9 {Visual Studio 2008} 102 ) else ( 103 if "%MSC_VER%" == "1600" ( 104 echo Detected Visual Studio 2010, but 105 echo will generate VC9 {Visual Studio 2008} 106 echo Use conversion wizard in VS 2010. 107 ) else ( 108 echo Will generate VC7 project {Visual Studio 2003 .NET} 109 ) 110 ) 111 ) 112 ) 113 echo %ProjectFile% 114 echo ************************************************************** 115 116 REM Test all variables to see whether the directories they 117 REM reference exist 118 119 if exist %HotSpotWorkSpace% goto test1 120 121 echo Error: directory pointed to by HotSpotWorkSpace 122 echo does not exist, or the variable is not set. 123 echo. 124 goto usage 125 126 :test1 127 if exist %HotSpotBuildSpace% goto test2 128 if not "%HotSpotBuildSpace%" == "" mkdir %HotSpotBuildSpace% 129 if exist %HotSpotBuildSpace% goto test2 130 echo Error: directory pointed to by HotSpotBuildSpace 131 echo does not exist, or the variable is not set. 132 echo. 133 goto usage 134 135 :test2 136 if exist %HotSpotJDKDist% goto test3 137 echo Error: directory pointed to by %HotSpotJDKDist% 138 echo does not exist, or the variable is not set. 139 echo. 140 goto usage 141 142 :test3 143 if not "%HOTSPOTMKSHOME%" == "" goto makedir 144 if exist c:\cygwin\bin set HOTSPOTMKSHOME=c:\cygwin\bin 145 if not "%HOTSPOTMKSHOME%" == "" goto makedir 146 echo Warning: please set variable HOTSPOTMKSHOME to place where 147 echo your MKS/Cygwin installation is 148 echo. 149 goto usage 150 151 :makedir 152 echo NOTE: Using the following settings: 153 echo HotSpotWorkSpace=%HotSpotWorkSpace% 154 echo HotSpotBuildSpace=%HotSpotBuildSpace% 155 echo HotSpotJDKDist=%HotSpotJDKDist% 156 157 158 REM This is now safe to do. 159 :copyfiles 160 for /D %%i in (compiler1, compiler2, tiered, core, kernel) do ( 161 if NOT EXIST %HotSpotBuildSpace%\%%i\generated mkdir %HotSpotBuildSpace%\%%i\generated 162 copy %HotSpotWorkSpace%\make\windows\projectfiles\%%i\* %HotSpotBuildSpace%\%%i\generated > NUL 163 ) 164 165 REM force regneration of ProjectFile 166 if exist %HotSpotBuildSpace%\%ProjectFile% del %HotSpotBuildSpace%\%ProjectFile% 167 168 for /D %%i in (compiler1, compiler2, tiered, core, kernel) do ( 169 echo -- %%i -- 170 echo # Generated file! > %HotSpotBuildSpace%\%%i\local.make 171 echo # Changing a variable below and then deleting %ProjectFile% will cause >> %HotSpotBuildSpace%\%%i\local.make 172 echo # %ProjectFile% to be regenerated with the new values. Changing the >> %HotSpotBuildSpace%\%%i\local.make 173 echo # version requires rerunning create.bat. >> %HotSpotBuildSpace%\%%i\local.make 174 echo. >> %HotSpotBuildSpace%\%%i\local.make 175 echo Variant=%%i >> %HotSpotBuildSpace%\%%i\local.make 176 echo WorkSpace=%HotSpotWorkSpace% >> %HotSpotBuildSpace%\%%i\local.make 177 echo HOTSPOTWORKSPACE=%HotSpotWorkSpace% >> %HotSpotBuildSpace%\%%i\local.make 178 echo HOTSPOTBUILDROOT=%HotSpotBuildRoot% >> %HotSpotBuildSpace%\%%i\local.make 179 echo HOTSPOTBUILDSPACE=%HotSpotBuildSpace% >> %HotSpotBuildSpace%\%%i\local.make 180 echo HOTSPOTJDKDIST=%HotSpotJDKDist% >> %HotSpotBuildSpace%\%%i\local.make 181 echo ARCH=%ARCH% >> %HotSpotBuildSpace%\%%i\local.make 182 echo BUILDARCH=%BUILDARCH% >> %HotSpotBuildSpace%\%%i\local.make 183 echo Platform_arch=%Platform_arch% >> %HotSpotBuildSpace%\%%i\local.make 184 echo Platform_arch_model=%Platform_arch_model% >> %HotSpotBuildSpace%\%%i\local.make 185 186 for /D %%j in (debug, fastdebug, product) do ( 187 if NOT EXIST %HotSpotBuildSpace%\%%i\%%j mkdir %HotSpotBuildSpace%\%%i\%%j 188 ) 189 190 pushd %HotSpotBuildSpace%\%%i\generated 191 nmake /nologo 192 popd 193 194 ) 195 196 pushd %HotSpotBuildRoot% 197 198 REM It doesn't matter which variant we use here, "compiler1" is as good as any of the others - we need the common variables 199 nmake /nologo /F %HotSpotWorkSpace%/make/windows/projectfiles/common/Makefile LOCAL_MAKE=%HotSpotBuildSpace%\compiler1\local.make %HotSpotBuildRoot%/%ProjectFile% 200 201 popd 202 203 goto end 204 205 :usage 206 echo Usage: create HotSpotJDKDist 207 echo. 208 echo This is the VS build setup script (as opposed to the batch 209 echo build execution script). It creates a build directory if necessary, 210 echo copies the appropriate files out of the workspace into it, and 211 echo builds and runs ProjectCreator in it. This has the side-effect of creating 212 echo the %ProjectFile% file in the build space, which is then used in Visual C++. 213 echo. 214 echo The HotSpotJDKDist defines the JDK that should be used when running the JVM. 215 echo Environment variable FORCE_MSC_VER allows to override MSVC version autodetection. 216 echo. 217 echo NOTE that it is now NOT safe to modify any of the files in the build 218 echo space, since they may be overwritten whenever this script is run or 219 echo nmake is run in that directory. 220 221 :end 222 223 endlocal