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