windows: improve Visual Studio Express build support
authorScott Blomquist <sblom@microsoft.com>
Thu, 3 Jan 2013 22:36:04 +0000 (23:36 +0100)
committerBert Belder <bertbelder@gmail.com>
Thu, 3 Jan 2013 22:38:25 +0000 (23:38 +0100)
* Moved generated files to a clearer directory.
* Improved detection logic for ctrpp.exe tool.

Closes #4482

configure
node.gyp
tools/msvs/genfiles/MSG00001.bin [moved from src/gen/MSG00001.bin with 100% similarity]
tools/msvs/genfiles/node_etw_provider.h [moved from src/gen/node_etw_provider.h with 100% similarity]
tools/msvs/genfiles/node_etw_provider.rc [moved from src/gen/node_etw_provider.rc with 100% similarity]
tools/msvs/genfiles/node_etw_providerTEMP.BIN [moved from src/gen/node_etw_providerTEMP.BIN with 100% similarity]
tools/msvs/genfiles/node_perfctr_provider.h [moved from src/gen/node_perfctr_provider.h with 100% similarity]
tools/msvs/genfiles/node_perfctr_provider.rc [moved from src/gen/node_perfctr_provider.rc with 100% similarity]
vcbuild.bat

index 3445153..a8687f2 100755 (executable)
--- a/configure
+++ b/configure
@@ -604,15 +604,14 @@ def configure_winsdk(o):
   if not sys.platform.startswith('win32'):
     return
 
-  try:
-    p = subprocess.Popen(['ctrpp.exe'],
-                         stdin=subprocess.PIPE,
-                         stdout=subprocess.PIPE,
-                         stderr=subprocess.PIPE)
-  except OSError:
+  winsdk_dir = os.environ.get("WindowsSdkDir")
+
+  if winsdk_dir and os.path.isfile(winsdk_dir + '\\bin\\ctrpp.exe'):
+    print "Found ctrpp in WinSDK--will build generated files into tools/msvs/genfiles."
+    o['variables']['node_has_winsdk'] = 'true'
     return
 
-  o['variables']['node_has_winsdk'] = 'true'
+  print "ctrpp not found in WinSDK path--using pre-gen files from tools/msvs/genfiles."
 
 
 output = {
index 5b82114..bbded80 100644 (file)
--- a/node.gyp
+++ b/node.gyp
@@ -73,7 +73,7 @@
 
       'include_dirs': [
         'src',
-        'src/gen',
+        'tools/msvs/genfiles',
         'deps/uv/src/ares',
         '<(SHARED_INTERMEDIATE_DIR)' # for node_natives.h
       ],
             'src/node_win32_etw_provider-inl.h',
             'src/node_win32_etw_provider.cc',
             'src/node_dtrace.cc',
-            'src/gen/node_etw_provider.h',
-            'src/gen/node_etw_provider.rc',
+            'tools/msvs/genfiles/node_etw_provider.h',
+            'tools/msvs/genfiles/node_etw_provider.rc',
           ]
         } ],
         [ 'node_use_perfctr=="true"', {
             'src/node_win32_perfctr_provider.cc',
             'src/node_counters.cc',
             'src/node_counters.h',
-            'src/gen/node_perfctr_provider.rc',
+            'tools/msvs/genfiles/node_perfctr_provider.rc',
           ]
         } ],
         [ 'node_shared_v8=="false"', {
               'action_name': 'node_etw',
               'inputs': [ 'src/res/node_etw_provider.man' ],
               'outputs': [
-                'src/gen/node_etw_provider.rc',
-                'src/gen/node_etw_provider.h',
-                'src/gen/node_etw_providerTEMP.BIN',
+                'tools/msvs/genfiles/node_etw_provider.rc',
+                'tools/msvs/genfiles/node_etw_provider.h',
+                'tools/msvs/genfiles/node_etw_providerTEMP.BIN',
               ],
-              'action': [ 'mc <@(_inputs) -h src/gen -r src/gen' ]
+              'action': [ 'mc <@(_inputs) -h tools/msvs/genfiles -r tools/msvs/genfiles' ]
             }
           ]
         } ]
               'action_name': 'node_perfctr_man',
               'inputs': [ 'src/res/node_perfctr_provider.man' ],
               'outputs': [
-                'src/gen/node_perfctr_provider.h',
-                'src/gen/node_perfctr_provider.rc',
-                'src/gen/MSG00001.BIN',
+                'tools/msvs/genfiles/node_perfctr_provider.h',
+                'tools/msvs/genfiles/node_perfctr_provider.rc',
+                'tools/msvs/genfiles/MSG00001.BIN',
               ],
               'action': [ 'ctrpp <@(_inputs) '
-                          '-o src/gen/node_perfctr_provider.h '
-                          '-rc src/gen/node_perfctr_provider.rc'
+                          '-o tools/msvs/genfiles/node_perfctr_provider.h '
+                          '-rc tools/msvs/genfiles/node_perfctr_provider.rc'
               ]
             },
           ],
index f4020df..0a2bd5e 100644 (file)
@@ -85,10 +85,13 @@ if defined noperfctr set noperfctr_arg=--without-perfctr& set noperfctr_msi_arg=
 if defined noprojgen goto msbuild
 
 @rem Generate the VS project.
-python configure %debug_arg% %nosnapshot_arg% %noetw_arg% %noperfctr_arg% --dest-cpu=%target_arch%
-if errorlevel 1 goto create-msvs-files-failed
-if not exist node.sln goto create-msvs-files-failed
-echo Project files generated.
+SETLOCAL
+  if defined VS100COMNTOOLS call "%VS100COMNTOOLS%\VCVarsQueryRegistry.bat"
+  python configure %debug_arg% %nosnapshot_arg% %noetw_arg% %noperfctr_arg% --dest-cpu=%target_arch%
+  if errorlevel 1 goto create-msvs-files-failed
+  if not exist node.sln goto create-msvs-files-failed
+  echo Project files generated.
+ENDLOCAL
 
 :msbuild
 @rem Skip project generation if requested.