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 "x64" >NUL 54 if %errorlevel% == 0 goto amd64 55 set ARCH=x86 56 set BUILDARCH=i486 57 set Platform_arch=x86 58 set Platform_arch_model=x86_32 59 goto done 60 :amd64 61 set ARCH=x86 62 set BUILDARCH=amd64 63 set Platform_arch=x86 64 set Platform_arch_model=x86_64 65 :done 66 67 setlocal 68 69 if "%1" == "" goto usage 70 71 if not "%2" == "" goto usage 72 73 REM Set HotSpotWorkSpace to the directy two steps above this script 74 for %%i in ("%~dp0..") do ( set HotSpotWorkSpace=%%~dpi) 75 set HotSpotBuildRoot=%HotSpotWorkSpace%build 76 set HotSpotBuildSpace=%HotSpotBuildRoot%\vs-%BUILDARCH% 77 set HotSpotJDKDist=%1 78 79 80 REM figure out MSC version 81 for /F %%i in ('sh %HotSpotWorkSpace%/make/windows/get_msc_ver.sh') do set %%i 82 83 echo ************************************************************** 84 set ProjectFile=%HotSpotBuildSpace%\jvm.vcproj 85 if "%MSC_VER%" == "1200" ( 86 set ProjectFile=%HotSpotBuildSpace%\jvm.dsp 87 echo Will generate VC6 project {unsupported} 88 ) else ( 89 if "%MSC_VER%" == "1400" ( 90 echo Will generate VC8 {Visual Studio 2005} 91 ) else ( 92 if "%MSC_VER%" == "1500" ( 93 echo Will generate VC9 {Visual Studio 2008} 94 ) else ( 95 if "%MSC_VER%" == "1600" ( 96 echo Detected Visual Studio 2010, but 97 echo will generate VC9 {Visual Studio 2008} 98 echo Use conversion wizard in VS 2010. 99 ) else ( 100 echo Will generate VC7 project {Visual Studio 2003 .NET} 101 ) 102 ) 103 ) 104 ) 105 echo %ProjectFile% 106 echo ************************************************************** 107 108 REM Test all variables to see whether the directories they 109 REM reference exist 110 111 if exist %HotSpotWorkSpace% goto test1 112 113 echo Error: directory pointed to by HotSpotWorkSpace 114 echo does not exist, or the variable is not set. 115 echo. 116 goto usage 117 118 :test1 119 if exist %HotSpotBuildSpace% goto test2 120 if not "%HotSpotBuildSpace%" == "" mkdir %HotSpotBuildSpace% 121 if exist %HotSpotBuildSpace% goto test2 122 echo Error: directory pointed to by HotSpotBuildSpace 123 echo does not exist, or the variable is not set. 124 echo. 125 goto usage 126 127 :test2 128 if exist %HotSpotJDKDist% goto test3 129 echo Error: directory pointed to by %HotSpotJDKDist% 130 echo does not exist, or the variable is not set. 131 echo. 132 goto usage 133 134 :test3 135 if not "%HOTSPOTMKSHOME%" == "" goto makedir 136 if exist c:\cygwin\bin set HOTSPOTMKSHOME=c:\cygwin\bin 137 if not "%HOTSPOTMKSHOME%" == "" goto makedir 138 echo Warning: please set variable HOTSPOTMKSHOME to place where 139 echo your MKS/Cygwin installation is 140 echo. 141 goto usage 142 143 :makedir 144 echo NOTE: Using the following settings: 145 echo HotSpotWorkSpace=%HotSpotWorkSpace% 146 echo HotSpotBuildSpace=%HotSpotBuildSpace% 147 echo HotSpotJDKDist=%HotSpotJDKDist% 148 149 150 REM This is now safe to do. 151 :copyfiles 152 for /D %%i in (compiler1, compiler2, tiered, core, kernel) do ( 153 if NOT EXIST %HotSpotBuildSpace%\%%i\generated mkdir %HotSpotBuildSpace%\%%i\generated 154 copy %HotSpotWorkSpace%\make\windows\projectfiles\%%i\* %HotSpotBuildSpace%\%%i\generated > NUL 155 ) 156 157 REM force regneration of ProjectFile 158 if exist %ProjectFile% del %ProjectFile% 159 160 for /D %%i in (compiler1, compiler2, tiered, core, kernel) do ( 161 echo -- %%i -- 162 echo # Generated file! > %HotSpotBuildSpace%\%%i\local.make 163 echo # Changing a variable below and then deleting %ProjectFile% will cause >> %HotSpotBuildSpace%\%%i\local.make 164 echo # %ProjectFile% to be regenerated with the new values. Changing the >> %HotSpotBuildSpace%\%%i\local.make 165 echo # version requires rerunning create.bat. >> %HotSpotBuildSpace%\%%i\local.make 166 echo. >> %HotSpotBuildSpace%\%%i\local.make 167 echo Variant=%%i >> %HotSpotBuildSpace%\%%i\local.make 168 echo WorkSpace=%HotSpotWorkSpace% >> %HotSpotBuildSpace%\%%i\local.make 169 echo HOTSPOTWORKSPACE=%HotSpotWorkSpace% >> %HotSpotBuildSpace%\%%i\local.make 170 echo HOTSPOTBUILDROOT=%HotSpotBuildRoot% >> %HotSpotBuildSpace%\%%i\local.make 171 echo HOTSPOTBUILDSPACE=%HotSpotBuildSpace% >> %HotSpotBuildSpace%\%%i\local.make 172 echo HOTSPOTJDKDIST=%HotSpotJDKDist% >> %HotSpotBuildSpace%\%%i\local.make 173 echo ARCH=%ARCH% >> %HotSpotBuildSpace%\%%i\local.make 174 echo BUILDARCH=%BUILDARCH% >> %HotSpotBuildSpace%\%%i\local.make 175 echo Platform_arch=%Platform_arch% >> %HotSpotBuildSpace%\%%i\local.make 176 echo Platform_arch_model=%Platform_arch_model% >> %HotSpotBuildSpace%\%%i\local.make 177 echo MSC_VER=%MSC_VER% >> %HotSpotBuildSpace%\%%i\local.make 178 179 for /D %%j in (debug, fastdebug, product) do ( 180 if NOT EXIST %HotSpotBuildSpace%\%%i\%%j mkdir %HotSpotBuildSpace%\%%i\%%j 181 ) 182 183 pushd %HotSpotBuildSpace%\%%i\generated 184 nmake /nologo 185 popd 186 187 ) 188 189 pushd %HotSpotBuildRoot% 190 191 REM It doesn't matter which variant we use here, "compiler1" is as good as any of the others - we need the common variables 192 nmake /nologo /F %HotSpotWorkSpace%/make/windows/projectfiles/common/Makefile LOCAL_MAKE=%HotSpotBuildSpace%\compiler1\local.make %ProjectFile% 193 194 popd 195 196 goto end 197 198 :usage 199 echo Usage: create HotSpotJDKDist 200 echo. 201 echo This is the VS build setup script (as opposed to the batch 202 echo build execution script). It creates a build directory if necessary, 203 echo copies the appropriate files out of the workspace into it, and 204 echo builds and runs ProjectCreator in it. This has the side-effect of creating 205 echo the %ProjectFile% file in the build space, which is then used in Visual C++. 206 echo. 207 echo The HotSpotJDKDist defines the JDK that should be used when running the JVM. 208 echo Environment variable FORCE_MSC_VER allows to override MSVC version autodetection. 209 echo. 210 echo NOTE that it is now NOT safe to modify any of the files in the build 211 echo space, since they may be overwritten whenever this script is run or 212 echo nmake is run in that directory. 213 214 :end 215 216 endlocal