From 841b7f534b80b86d4f815ed3d66f7ac9c1944841 Mon Sep 17 00:00:00 2001 From: Scott Blomquist Date: Fri, 21 Dec 2012 00:06:21 -0800 Subject: [PATCH] Ease building with VS Express by checking in generated files. --- configure | 16 ++++++++ node.gyp | 28 ++++++++------ src/gen/MSG00001.bin | Bin 0 -> 48 bytes src/gen/node_etw_provider.h | 59 ++++++++++++++++++++++++++++ src/gen/node_etw_provider.rc | 3 ++ src/gen/node_etw_providerTEMP.BIN | Bin 0 -> 5410 bytes src/gen/node_perfctr_provider.h | 79 ++++++++++++++++++++++++++++++++++++++ src/gen/node_perfctr_provider.rc | 36 +++++++++++++++++ 8 files changed, 209 insertions(+), 12 deletions(-) create mode 100644 src/gen/MSG00001.bin create mode 100644 src/gen/node_etw_provider.h create mode 100644 src/gen/node_etw_provider.rc create mode 100644 src/gen/node_etw_providerTEMP.BIN create mode 100644 src/gen/node_perfctr_provider.h create mode 100644 src/gen/node_perfctr_provider.rc diff --git a/configure b/configure index 112d7cd..a97e964 100755 --- a/configure +++ b/configure @@ -590,6 +590,21 @@ def configure_openssl(o): o['cflags'] += cflags.split() +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: + return + + o['variables']['node_has_winsdk'] = 'true' + + output = { 'variables': { 'python': sys.executable }, 'include_dirs': [], @@ -605,6 +620,7 @@ configure_cares(output) configure_libuv(output) configure_v8(output) configure_openssl(output) +configure_winsdk(output) # variables should be a root level element, # move everything else to target_defaults diff --git a/node.gyp b/node.gyp index cd5cad4..8035464 100644 --- a/node.gyp +++ b/node.gyp @@ -7,6 +7,7 @@ 'node_use_dtrace%': 'false', 'node_use_etw%': 'false', 'node_use_perfctr%': 'false', + 'node_has_winsdk%': 'false', 'node_shared_v8%': 'false', 'node_shared_zlib%': 'false', 'node_shared_http_parser%': 'false', @@ -72,6 +73,7 @@ 'include_dirs': [ 'src', + 'src/gen', 'deps/uv/src/ares', '<(SHARED_INTERMEDIATE_DIR)' # for node_natives.h ], @@ -191,8 +193,8 @@ 'src/node_win32_etw_provider-inl.h', 'src/node_win32_etw_provider.cc', 'src/node_dtrace.cc', - '<(SHARED_INTERMEDIATE_DIR)/node_etw_provider.h', - '<(SHARED_INTERMEDIATE_DIR)/node_etw_provider.rc', + 'src/gen/node_etw_provider.h', + 'src/gen/node_etw_provider.rc', ] } ], [ 'node_use_perfctr=="true"', { @@ -203,7 +205,7 @@ 'src/node_win32_perfctr_provider.cc', 'src/node_counters.cc', 'src/node_counters.h', - '<(SHARED_INTERMEDIATE_DIR)/node_perfctr_provider.rc', + 'src/gen/node_perfctr_provider.rc', ] } ], [ 'node_shared_v8=="false"', { @@ -286,16 +288,17 @@ 'target_name': 'node_etw', 'type': 'none', 'conditions': [ - [ 'node_use_etw=="true"', { + [ 'node_use_etw=="true" and node_has_winsdk=="true"', { 'actions': [ { 'action_name': 'node_etw', 'inputs': [ 'src/res/node_etw_provider.man' ], 'outputs': [ - '<(SHARED_INTERMEDIATE_DIR)/node_etw_provider.rc', - '<(SHARED_INTERMEDIATE_DIR)/node_etw_provider.h', + 'src/gen/node_etw_provider.rc', + 'src/gen/node_etw_provider.h', + 'src/gen/node_etw_providerTEMP.BIN', ], - 'action': [ 'mc <@(_inputs) -h <(SHARED_INTERMEDIATE_DIR) -r <(SHARED_INTERMEDIATE_DIR)' ] + 'action': [ 'mc <@(_inputs) -h src/gen -r src/gen' ] } ] } ] @@ -306,18 +309,19 @@ 'target_name': 'node_perfctr', 'type': 'none', 'conditions': [ - [ 'node_use_perfctr=="true"', { + [ 'node_use_perfctr=="true" and node_has_winsdk=="true"', { 'actions': [ { 'action_name': 'node_perfctr_man', 'inputs': [ 'src/res/node_perfctr_provider.man' ], 'outputs': [ - '<(SHARED_INTERMEDIATE_DIR)/node_perfctr_provider.h', - '<(SHARED_INTERMEDIATE_DIR)/node_perfctr_provider.rc', + 'src/gen/node_perfctr_provider.h', + 'src/gen/node_perfctr_provider.rc', + 'src/gen/MSG00001.BIN', ], 'action': [ 'ctrpp <@(_inputs) ' - '-o <(SHARED_INTERMEDIATE_DIR)/node_perfctr_provider.h ' - '-rc <(SHARED_INTERMEDIATE_DIR)/node_perfctr_provider.rc' + '-o src/gen/node_perfctr_provider.h ' + '-rc src/gen/node_perfctr_provider.rc' ] }, ], diff --git a/src/gen/MSG00001.bin b/src/gen/MSG00001.bin new file mode 100644 index 0000000000000000000000000000000000000000..051a5d8ca8b6d218be5842c9a439fca7c4d35b56 GIT binary patch literal 48 xcmZQ%U|?WjU3lxf4wTTU4)bMLmBx2ca+0yN{c9#}J(?GlY#8ODRfEp6f z5H$u9BoIh!V$_=S#lV9mnD9tUwQ3q|lm`+G;lY?DNJ0#WCiVO7+}+OX%#>Z=!LzwD zcg{WM+%xBV_uM-h>uhPOUo27~0sKThN*z4hy6l6tuiv`1=;epTs~W)Tj(27Ltr3|9 zh44HF?Kql&maE1Ew0@x|{Uf+n;Q12nChilsmr9w;#^fLKML0($-qvv$4$%f1`}A+< z#F9@ouefj|Jo?Y3ukQc*baeoJPfv$2*7WvViOV6$%7EmgNp|4611d)2^z;hc-`{WA zxV7MfT2Gsjg3vxFi39_N?23?ilXJ;n9qQQ<2}e*idO6$`ONDn*kg{_8sIFauf6`xPrr3vjn*vt{L+<= zpC8wGJ$jqGu7avFulLb#ab7DBr$OmgnN<-kIX^^3PWB)}jBdcnPnl>k?ifwXCh$S2@Q67pZx+Vvxxmmp#bgbN7V8?D zi3>4#B(dq;$um#(|F!OyHDBD=eoSNXyZI1$1MRV8S(>AP7Kq-mnMnyyn?4KjFc<;-Nd`At$KU zx5Ior{PN2neZH4a(E^3QiUD%3UcJs|26MF&!-@HrY5`x$r|_Ts^2=I;X0SBwK_P)?+d#fVxCm2GlOK2l|?$Up_8^aM=|EeXT8fKiO<|8 z?D!zB*pGbHIo940Yac_A<6g~*$nWYXj0SW+!3kuZ;`gb3mFf?xenj;rRe!$fS1q7? zwdyBSKdSmU)nB0cr&NEj>VK*FOH}`w>es4%6yNI4z*0)u5zV;tNJ29Bb)c8VbEkBv zYY%#Hc~Q3Dn#MS(_!KjCUnpz@25lv|2|77+Q}0VO43@ zAwmQCyt)r~$brj!m?t!x3mVg{3EZjA#&v+3gGOMl9vu5x??fHuUcOiVZ_^sz)}2?1 zccn5Ng|(%9v(-$_Vd5-u6!j_r+r`AQt~qapOZl^SJnJLR|GG?TAuA=yAApe&A9)og zoILWBw}0M89OM~)Dan_&ok;jmjs%ALl zfA^8+(c0v{bDC(s5BWH*<=-pH0se{t7fqCB Kmof0dgUEj-MHR;Y literal 0 HcmV?d00001 diff --git a/src/gen/node_perfctr_provider.h b/src/gen/node_perfctr_provider.h new file mode 100644 index 0000000..a54ce90 --- /dev/null +++ b/src/gen/node_perfctr_provider.h @@ -0,0 +1,79 @@ +/* This file was auto-generated from src\res\node_perfctr_provider.man by ctrpp.exe */ + +#pragma once + + +EXTERN_C DECLSPEC_SELECTANY GUID NodeCounterProviderGuid = { 0x1e2e15d7, 0x3760, 0x470e, 0x86, 0x99, 0xb9, 0xdb, 0x52, 0x48, 0xed, 0xd5 }; + +EXTERN_C DECLSPEC_SELECTANY GUID NodeCounterSetGuid = { 0x3a22a8ec, 0x297c, 0x48ac, 0xab, 0x15, 0x33, 0xec, 0x93, 0x3, 0x3f, 0xd8 }; + + +EXTERN_C DECLSPEC_SELECTANY HANDLE NodeCounterProvider = NULL; + +EXTERN_C DECLSPEC_SELECTANY struct { + PERF_COUNTERSET_INFO CounterSet; + PERF_COUNTER_INFO Counter0; + PERF_COUNTER_INFO Counter1; + PERF_COUNTER_INFO Counter2; + PERF_COUNTER_INFO Counter3; + PERF_COUNTER_INFO Counter4; + PERF_COUNTER_INFO Counter5; + PERF_COUNTER_INFO Counter6; + PERF_COUNTER_INFO Counter7; + PERF_COUNTER_INFO Counter8; + PERF_COUNTER_INFO Counter9; +} NodeCounterSetInfo = { + { { 0x3a22a8ec, 0x297c, 0x48ac, 0xab, 0x15, 0x33, 0xec, 0x93, 0x3, 0x3f, 0xd8 }, { 0x1e2e15d7, 0x3760, 0x470e, 0x86, 0x99, 0xb9, 0xdb, 0x52, 0x48, 0xed, 0xd5 }, 10, PERF_COUNTERSET_MULTI_INSTANCES }, + { 1, PERF_COUNTER_COUNTER, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 }, + { 2, PERF_COUNTER_COUNTER, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 }, + { 3, PERF_COUNTER_COUNTER, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 }, + { 4, PERF_COUNTER_COUNTER, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 }, + { 5, PERF_COUNTER_RAWCOUNT, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 }, + { 6, PERF_COUNTER_BULK_COUNT, 0, sizeof(ULONGLONG), PERF_DETAIL_NOVICE, 4294967293, 0 }, + { 7, PERF_COUNTER_BULK_COUNT, 0, sizeof(ULONGLONG), PERF_DETAIL_NOVICE, 4294967293, 0 }, + { 8, PERF_COUNTER_RAWCOUNT, 0, sizeof(ULONG), PERF_DETAIL_NOVICE, 0, 0 }, + { 9, PERF_COUNTER_BULK_COUNT, 0, sizeof(ULONGLONG), PERF_DETAIL_NOVICE, 4294967293, 0 }, + { 10, PERF_COUNTER_BULK_COUNT, 0, sizeof(ULONGLONG), PERF_DETAIL_NOVICE, 4294967293, 0 }, +}; + +EXTERN_C FORCEINLINE +VOID +CounterCleanup( + VOID + ) +{ + if (NodeCounterProvider != NULL) { + PerfStopProvider(NodeCounterProvider); + NodeCounterProvider = NULL; + } +} + +EXTERN_C FORCEINLINE +ULONG +CounterInitialize( + VOID + ) +{ + ULONG Status; + PERF_PROVIDER_CONTEXT ProviderContext; + + ZeroMemory(&ProviderContext, sizeof(PERF_PROVIDER_CONTEXT)); + ProviderContext.ContextSize = sizeof(PERF_PROVIDER_CONTEXT); + + Status = PerfStartProviderEx(&NodeCounterProviderGuid, + &ProviderContext, + &NodeCounterProvider); + if (Status != ERROR_SUCCESS) { + NodeCounterProvider = NULL; + return Status; + } + + Status = PerfSetCounterSetInfo(NodeCounterProvider, + &NodeCounterSetInfo.CounterSet, + sizeof NodeCounterSetInfo); + if (Status != ERROR_SUCCESS) { + CounterCleanup(); + return Status; + } + return ERROR_SUCCESS; +} diff --git a/src/gen/node_perfctr_provider.rc b/src/gen/node_perfctr_provider.rc new file mode 100644 index 0000000..c7816f5 --- /dev/null +++ b/src/gen/node_perfctr_provider.rc @@ -0,0 +1,36 @@ +STRINGTABLE +BEGIN + 1 "Node.js" + 2 "Node.js" // {Locked} means don't localize + 3 "Node.js performance counters" + 5 "HTTP server requests" + 6 "HTTP server requests" // {Locked} means don't localize + 7 "Number of HTTP server requests" + 9 "HTTP server responses" + 10 "HTTP server responses" // {Locked} means don't localize + 11 "Number of HTTP server responses" + 13 "HTTP client requests" + 14 "HTTP client requests" // {Locked} means don't localize + 15 "Number of HTTP client requests" + 17 "HTTP client responses" + 18 "HTTP client responses" // {Locked} means don't localize + 19 "Number of HTTP client responses" + 21 "Active server connections" + 22 "Active server connections" // {Locked} means don't localize + 23 "Number of server connections" + 25 "Network bytes sent" + 26 "Network bytes sent" // {Locked} means don't localize + 27 "Number of bytes sent using TCP" + 29 "Network bytes received" + 30 "Network bytes received" // {Locked} means don't localize + 31 "Number of bytes received using TCP" + 33 "%Time in GC" + 34 "%Time in GC" // {Locked} means don't localize + 35 "Percent of time for last GC" + 37 "Pipe bytes sent" + 38 "Pipe bytes sent" // {Locked} means don't localize + 39 "Number of bytes sent using pipe" + 41 "Pipe bytes received" + 42 "Pipe bytes received" // {Locked} means don't localize + 43 "Number of bytes received using pipe" +END -- 2.7.4