2
2
# node build stuff
3
3
#
4
4
5
+ set (macros_file ${PROJECT_BINARY_DIR} /macros .py)
6
+
7
+ # replace debug(x) and assert(x) with nothing in release build
8
+ if (${CMAKE_BUILD_TYPE} MATCHES Release)
9
+ file (APPEND ${macros_file} "macro debug(x) = ;\n " )
10
+ file (APPEND ${macros_file} "macro assert(x) = ;\n " )
11
+ endif ()
12
+
13
+ if (NOT DTRACE)
14
+ set (dtrace_probes
15
+ DTRACE_HTTP_CLIENT_REQUEST
16
+ DTRACE_HTTP_CLIENT_RESPONSE
17
+ DTRACE_HTTP_SERVER_REQUEST
18
+ DTRACE_HTTP_SERVER_RESPONSE
19
+ DTRACE_NET_SERVER_CONNECTION
20
+ DTRACE_NET_STREAM_END
21
+ DTRACE_NET_SOCKET_READ
22
+ DTRACE_NET_SOCKET_WRITE)
23
+ foreach (probe ${dtrace_probes} )
24
+ file (APPEND ${macros_file} "macro ${probe} (x) = ;\n " )
25
+ endforeach ()
26
+ endif ()
27
+
28
+ # include macros file in generation
29
+ set (js2c_files ${js2c_files} ${macros_file} )
30
+
5
31
add_custom_command (
6
32
OUTPUT ${PROJECT_BINARY_DIR} /src/node_natives.h
7
33
COMMAND ${PYTHON_EXECUTABLE} tools/js2c.py ${PROJECT_BINARY_DIR} /src/node_natives.h ${js2c_files}
@@ -66,6 +92,15 @@ include_directories(
66
92
${PROJECT_BINARY_DIR} /src
67
93
)
68
94
95
+ if (DTRACE)
96
+ add_custom_command (OUTPUT ${PROJECT_BINARY_DIR} /src/node_provider.h
97
+ COMMAND ${dtrace_bin} -x nolibs -h -o ${PROJECT_BINARY_DIR} /src/node_provider.h -s ${PROJECT_SOURCE_DIR} /src/node_provider.d
98
+ DEPENDS ${PROJECT_SOURCE_DIR} /src/node_provider.d)
99
+
100
+ set (node_sources ${node_sources} src/node_provider.o)
101
+ set (node_sources src/node_provider.h ${node_sources} )
102
+ endif ()
103
+
69
104
add_executable (node ${node_sources} )
70
105
set_target_properties (node PROPERTIES DEBUG_POSTFIX "_g" )
71
106
target_link_libraries (node
@@ -77,6 +112,20 @@ target_link_libraries(node
77
112
${CMAKE_THREAD_LIBS_INIT}
78
113
${extra_libs} )
79
114
115
+ if (DTRACE)
116
+ # manually gather up the object files for dtrace
117
+ get_property (sourcefiles TARGET node PROPERTY SOURCES )
118
+ foreach (src_file ${sourcefiles} )
119
+ if (src_file MATCHES ".*\\ .cc$" )
120
+ set (node_objs ${node_objs} ${PROJECT_BINARY_DIR} /CMakeFiles/node.dir/${src_file} .o)
121
+ endif ()
122
+ endforeach ()
123
+
124
+ add_custom_command (OUTPUT ${PROJECT_BINARY_DIR} /src/node_provider.o
125
+ #COMMAND cmake -E echo ${node_objs}
126
+ COMMAND ${dtrace_bin} -G -x nolibs -s ${PROJECT_SOURCE_DIR} /src/node_provider.d -o ${PROJECT_BINARY_DIR} /src/node_provider.o ${node_objs}
127
+ DEPENDS ${node_objs} )
128
+ endif ()
80
129
81
130
install (TARGETS node RUNTIME DESTINATION bin)
82
131
install (FILES
0 commit comments