1 # 2 # Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. 3 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 # 5 # This code is free software; you can redistribute it and/or modify it 6 # under the terms of the GNU General Public License version 2 only, as 7 # published by the Free Software Foundation. 8 # 9 # This code is distributed in the hope that it will be useful, but WITHOUT 10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 # version 2 for more details (a copy is included in the LICENSE file that 13 # accompanied this code). 14 # 15 # You should have received a copy of the GNU General Public License version 16 # 2 along with this work; if not, write to the Free Software Foundation, 17 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 # 19 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 # or visit www.oracle.com if you need additional information or have any 21 # questions. 22 # 23 # 24 25 # Resource file containing VERSIONINFO 26 Res_Files=.\version.res 27 28 !include ..\generated\objfiles.make 29 30 COMMONSRC=$(WorkSpace)\src 31 ALTSRC=$(WorkSpace)\src\closed 32 33 !ifdef RELEASE 34 !ifdef DEVELOP 35 CXX_FLAGS=$(CXX_FLAGS) /D "DEBUG" 36 !else 37 CXX_FLAGS=$(CXX_FLAGS) /D "PRODUCT" 38 !endif 39 !else 40 CXX_FLAGS=$(CXX_FLAGS) /D "ASSERT" 41 !endif 42 43 !if "$(Variant)" == "core" 44 # No need to define anything, CORE is defined as !COMPILER1 && !COMPILER2 45 !endif 46 47 !if "$(Variant)" == "compiler1" 48 CXX_FLAGS=$(CXX_FLAGS) /D "COMPILER1" 49 !endif 50 51 !if "$(Variant)" == "compiler2" 52 CXX_FLAGS=$(CXX_FLAGS) /D "COMPILER2" 53 !endif 54 55 !if "$(Variant)" == "tiered" 56 CXX_FLAGS=$(CXX_FLAGS) /D "COMPILER1" /D "COMPILER2" 57 !endif 58 59 !if "$(BUILDARCH)" == "i486" 60 HOTSPOT_LIB_ARCH=i386 61 !else 62 HOTSPOT_LIB_ARCH=$(BUILDARCH) 63 !endif 64 65 # The following variables are defined in the generated local.make file. 66 CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_RELEASE_VERSION=\"$(HS_BUILD_VER)\"" 67 CXX_FLAGS=$(CXX_FLAGS) /D "JRE_RELEASE_VERSION=\"$(JRE_RELEASE_VER)\"" 68 CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_LIB_ARCH=\"$(HOTSPOT_LIB_ARCH)\"" 69 CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_BUILD_TARGET=\"$(BUILD_FLAVOR)\"" 70 CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_BUILD_USER=\"$(BuildUser)\"" 71 CXX_FLAGS=$(CXX_FLAGS) /D "HOTSPOT_VM_DISTRO=\"$(HOTSPOT_VM_DISTRO)\"" 72 73 !ifndef JAVASE_EMBEDDED 74 CXX_FLAGS=$(CXX_FLAGS) /D "INCLUDE_TRACE" 75 !endif 76 77 CXX_FLAGS=$(CXX_FLAGS) $(CXX_INCLUDE_DIRS) 78 79 # Define that so jni.h is on correct side 80 CXX_FLAGS=$(CXX_FLAGS) /D "_JNI_IMPLEMENTATION_" 81 82 !if "$(BUILDARCH)" == "ia64" 83 STACK_SIZE="/STACK:1048576,262144" 84 !else 85 STACK_SIZE= 86 !endif 87 88 !if "$(BUILDARCH)" == "ia64" 89 # AsyncGetCallTrace is not supported on IA64 yet 90 AGCT_EXPORT= 91 !else 92 AGCT_EXPORT=/export:AsyncGetCallTrace 93 !endif 94 95 # If you modify exports below please do the corresponding changes in 96 # src/share/tools/ProjectCreator/WinGammaPlatformVC7.java 97 LD_FLAGS=$(LD_FLAGS) $(STACK_SIZE) /subsystem:windows /dll /base:0x8000000 \ 98 /export:JNI_GetDefaultJavaVMInitArgs \ 99 /export:JNI_CreateJavaVM \ 100 /export:JVM_FindClassFromBootLoader \ 101 /export:JNI_GetCreatedJavaVMs \ 102 /export:jio_snprintf \ 103 /export:jio_printf \ 104 /export:jio_fprintf \ 105 /export:jio_vfprintf \ 106 /export:jio_vsnprintf \ 107 $(AGCT_EXPORT) \ 108 /export:JVM_GetVersionInfo \ 109 /export:JVM_GetThreadStateNames \ 110 /export:JVM_GetThreadStateValues \ 111 /export:JVM_InitAgentProperties 112 113 CXX_INCLUDE_DIRS=/I "..\generated" 114 115 !if exists($(ALTSRC)\share\vm) 116 CXX_INCLUDE_DIRS=$(CXX_INCLUDE_DIRS) /I "$(ALTSRC)\share\vm" 117 !endif 118 119 !if exists($(ALTSRC)\os\windows\vm) 120 CXX_INCLUDE_DIRS=$(CXX_INCLUDE_DIRS) /I "$(ALTSRC)\os\windows\vm" 121 !endif 122 123 !if exists($(ALTSRC)\os_cpu\windows_$(Platform_arch)\vm) 124 CXX_INCLUDE_DIRS=$(CXX_INCLUDE_DIRS) /I "$(ALTSRC)\os_cpu\windows_$(Platform_arch)\vm" 125 !endif 126 127 !if exists($(ALTSRC)\cpu\$(Platform_arch)\vm) 128 CXX_INCLUDE_DIRS=$(CXX_INCLUDE_DIRS) /I "$(ALTSRC)\cpu\$(Platform_arch)\vm" 129 !endif 130 131 CXX_INCLUDE_DIRS=$(CXX_INCLUDE_DIRS) \ 132 /I "$(COMMONSRC)\share\vm" \ 133 /I "$(COMMONSRC)\share\vm\precompiled" \ 134 /I "$(COMMONSRC)\share\vm\prims" \ 135 /I "$(COMMONSRC)\os\windows\vm" \ 136 /I "$(COMMONSRC)\os_cpu\windows_$(Platform_arch)\vm" \ 137 /I "$(COMMONSRC)\cpu\$(Platform_arch)\vm" 138 139 CXX_DONT_USE_PCH=/D DONT_USE_PRECOMPILED_HEADER 140 141 !if "$(USE_PRECOMPILED_HEADER)" != "0" 142 CXX_USE_PCH=/Fp"vm.pch" /Yu"precompiled.hpp" 143 !else 144 CXX_USE_PCH=$(CXX_DONT_USE_PCH) 145 !endif 146 147 # Where to find the source code for the virtual machine (is this used?) 148 VM_PATH=../generated 149 VM_PATH=$(VM_PATH);../generated/adfiles 150 VM_PATH=$(VM_PATH);../generated/jvmtifiles 151 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/c1 152 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/compiler 153 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/code 154 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/interpreter 155 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/ci 156 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/classfile 157 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/gc_implementation/parallelScavenge 158 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/gc_implementation/shared 159 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/gc_implementation/parNew 160 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/gc_implementation/concurrentMarkSweep 161 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/gc_implementation/g1 162 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/gc_interface 163 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/asm 164 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/memory 165 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/oops 166 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/prims 167 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/prims/wbtestmethods 168 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/runtime 169 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/services 170 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/trace 171 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/utilities 172 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/libadt 173 VM_PATH=$(VM_PATH);$(WorkSpace)/src/os/windows/vm 174 VM_PATH=$(VM_PATH);$(WorkSpace)/src/os_cpu/windows_$(Platform_arch)/vm 175 VM_PATH=$(VM_PATH);$(WorkSpace)/src/cpu/$(Platform_arch)/vm 176 VM_PATH=$(VM_PATH);$(WorkSpace)/src/share/vm/opto 177 178 !if exists($(ALTSRC)\share\vm\jfr) 179 VM_PATH=$(VM_PATH);$(ALTSRC)/share/vm/jfr/agent 180 VM_PATH=$(VM_PATH);$(ALTSRC)/share/vm/jfr/agent/isolated_deps/util 181 VM_PATH=$(VM_PATH);$(ALTSRC)/share/vm/jfr/jvm 182 VM_PATH=$(VM_PATH);$(ALTSRC)/share/vm/jfr 183 !endif 184 185 VM_PATH={$(VM_PATH)} 186 187 # Special case files not using precompiled header files. 188 189 c1_RInfo_$(Platform_arch).obj: $(WorkSpace)\src\cpu\$(Platform_arch)\vm\c1_RInfo_$(Platform_arch).cpp 190 $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\cpu\$(Platform_arch)\vm\c1_RInfo_$(Platform_arch).cpp 191 192 os_windows.obj: $(WorkSpace)\src\os\windows\vm\os_windows.cpp 193 $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\os\windows\vm\os_windows.cpp 194 195 os_windows_$(Platform_arch).obj: $(WorkSpace)\src\os_cpu\windows_$(Platform_arch)\vm\os_windows_$(Platform_arch).cpp 196 $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\os_cpu\windows_$(Platform_arch)\vm\os_windows_$(Platform_arch).cpp 197 198 osThread_windows.obj: $(WorkSpace)\src\os\windows\vm\osThread_windows.cpp 199 $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\os\windows\vm\osThread_windows.cpp 200 201 conditionVar_windows.obj: $(WorkSpace)\src\os\windows\vm\conditionVar_windows.cpp 202 $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\os\windows\vm\conditionVar_windows.cpp 203 204 getThread_windows_$(Platform_arch).obj: $(WorkSpace)\src\os_cpu\windows_$(Platform_arch)\vm\getThread_windows_$(Platform_arch).cpp 205 $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\os_cpu\windows_$(Platform_arch)\vm\getThread_windows_$(Platform_arch).cpp 206 207 opcodes.obj: $(WorkSpace)\src\share\vm\opto\opcodes.cpp 208 $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\share\vm\opto\opcodes.cpp 209 210 bytecodeInterpreter.obj: $(WorkSpace)\src\share\vm\interpreter\bytecodeInterpreter.cpp 211 $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c $(WorkSpace)\src\share\vm\interpreter\bytecodeInterpreter.cpp 212 213 bytecodeInterpreterWithChecks.obj: ..\generated\jvmtifiles\bytecodeInterpreterWithChecks.cpp 214 $(CXX) $(CXX_FLAGS) $(CXX_DONT_USE_PCH) /c ..\generated\jvmtifiles\bytecodeInterpreterWithChecks.cpp 215 216 # Default rules for the Virtual Machine 217 {$(COMMONSRC)\share\vm\c1}.cpp.obj:: 218 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 219 220 {$(COMMONSRC)\share\vm\compiler}.cpp.obj:: 221 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 222 223 {$(COMMONSRC)\share\vm\code}.cpp.obj:: 224 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 225 226 {$(COMMONSRC)\share\vm\interpreter}.cpp.obj:: 227 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 228 229 {$(COMMONSRC)\share\vm\ci}.cpp.obj:: 230 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 231 232 {$(COMMONSRC)\share\vm\classfile}.cpp.obj:: 233 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 234 235 {$(COMMONSRC)\share\vm\gc_implementation\parallelScavenge}.cpp.obj:: 236 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 237 238 {$(COMMONSRC)\share\vm\gc_implementation\shared}.cpp.obj:: 239 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 240 241 {$(COMMONSRC)\share\vm\gc_implementation\parNew}.cpp.obj:: 242 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 243 244 {$(COMMONSRC)\share\vm\gc_implementation\concurrentMarkSweep}.cpp.obj:: 245 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 246 247 {$(COMMONSRC)\share\vm\gc_implementation\g1}.cpp.obj:: 248 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 249 250 {$(COMMONSRC)\share\vm\gc_interface}.cpp.obj:: 251 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 252 253 {$(COMMONSRC)\share\vm\asm}.cpp.obj:: 254 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 255 256 {$(COMMONSRC)\share\vm\memory}.cpp.obj:: 257 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 258 259 {$(COMMONSRC)\share\vm\oops}.cpp.obj:: 260 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 261 262 {$(COMMONSRC)\share\vm\prims}.cpp.obj:: 263 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 264 265 {$(COMMONSRC)\share\vm\prims\wbtestmethods}.cpp.obj:: 266 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 267 268 {$(COMMONSRC)\share\vm\runtime}.cpp.obj:: 269 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 270 271 {$(COMMONSRC)\share\vm\services}.cpp.obj:: 272 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 273 274 {$(COMMONSRC)\share\vm\trace}.cpp.obj:: 275 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 276 277 {$(COMMONSRC)\share\vm\utilities}.cpp.obj:: 278 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 279 280 {$(COMMONSRC)\share\vm\libadt}.cpp.obj:: 281 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 282 283 {$(COMMONSRC)\share\vm\opto}.cpp.obj:: 284 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 285 286 {$(COMMONSRC)\os\windows\vm}.cpp.obj:: 287 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 288 289 # This guy should remain a single colon rule because 290 # otherwise we can't specify the output filename. 291 {$(COMMONSRC)\os\windows\vm}.rc.res: 292 @$(RC) $(RC_FLAGS) /fo"$@" $< 293 294 {$(COMMONSRC)\cpu\$(Platform_arch)\vm}.cpp.obj:: 295 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 296 297 {$(COMMONSRC)\os_cpu\windows_$(Platform_arch)\vm}.cpp.obj:: 298 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 299 300 {$(ALTSRC)\share\vm\c1}.cpp.obj:: 301 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 302 303 {$(ALTSRC)\share\vm\compiler}.cpp.obj:: 304 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 305 306 {$(ALTSRC)\share\vm\code}.cpp.obj:: 307 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 308 309 {$(ALTSRC)\share\vm\interpreter}.cpp.obj:: 310 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 311 312 {$(ALTSRC)\share\vm\ci}.cpp.obj:: 313 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 314 315 {$(ALTSRC)\share\vm\classfile}.cpp.obj:: 316 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 317 318 {$(ALTSRC)\share\vm\gc_implementation\parallelScavenge}.cpp.obj:: 319 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 320 321 {$(ALTSRC)\share\vm\gc_implementation\shared}.cpp.obj:: 322 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 323 324 {$(ALTSRC)\share\vm\gc_implementation\parNew}.cpp.obj:: 325 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 326 327 {$(ALTSRC)\share\vm\gc_implementation\concurrentMarkSweep}.cpp.obj:: 328 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 329 330 {$(ALTSRC)\share\vm\gc_implementation\g1}.cpp.obj:: 331 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 332 333 {$(ALTSRC)\share\vm\gc_interface}.cpp.obj:: 334 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 335 336 {$(ALTSRC)\share\vm\asm}.cpp.obj:: 337 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 338 339 {$(ALTSRC)\share\vm\memory}.cpp.obj:: 340 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 341 342 {$(ALTSRC)\share\vm\oops}.cpp.obj:: 343 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 344 345 {$(ALTSRC)\share\vm\prims}.cpp.obj:: 346 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 347 348 {$(ALTSRC)\share\vm\prims\wbtestmethods}.cpp.obj:: 349 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 350 351 {$(ALTSRC)\share\vm\runtime}.cpp.obj:: 352 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 353 354 {$(ALTSRC)\share\vm\services}.cpp.obj:: 355 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 356 357 {$(ALTSRC)\share\vm\trace}.cpp.obj:: 358 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 359 360 {$(ALTSRC)\share\vm\utilities}.cpp.obj:: 361 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 362 363 {$(ALTSRC)\share\vm\libadt}.cpp.obj:: 364 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 365 366 {$(ALTSRC)\share\vm\opto}.cpp.obj:: 367 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 368 369 {$(ALTSRC)\os\windows\vm}.cpp.obj:: 370 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 371 372 # otherwise we can't specify the output filename. 373 {$(ALTSRC)\os\windows\vm}.rc.res: 374 @$(RC) $(RC_FLAGS) /fo"$@" $< 375 376 {$(ALTSRC)\cpu\$(Platform_arch)\vm}.cpp.obj:: 377 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 378 379 {$(ALTSRC)\os_cpu\windows_$(Platform_arch)\vm}.cpp.obj:: 380 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 381 382 {..\generated\incls}.cpp.obj:: 383 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 384 385 {..\generated\adfiles}.cpp.obj:: 386 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 387 388 {..\generated\jvmtifiles}.cpp.obj:: 389 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 390 391 {$(ALTSRC)\share\vm\jfr}.cpp.obj:: 392 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 393 394 {$(ALTSRC)\share\vm\jfr\agent}.cpp.obj:: 395 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 396 397 {$(ALTSRC)\share\vm\jfr\agent\isolated_deps\util}.cpp.obj:: 398 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 399 400 {$(ALTSRC)\share\vm\jfr\jvm}.cpp.obj:: 401 $(CXX) $(CXX_FLAGS) $(CXX_USE_PCH) /c $< 402 403 default:: 404 405 _build_pch_file.obj: 406 @echo #include "precompiled.hpp" > ../generated/_build_pch_file.cpp 407 $(CXX) $(CXX_FLAGS) /Fp"vm.pch" /Yc"precompiled.hpp" /c ../generated/_build_pch_file.cpp