build: allow building with dtrace on osx
authorDave Pacheco <dap@joyent.com>
Thu, 28 Mar 2013 18:36:00 +0000 (11:36 -0700)
committerBen Noordhuis <info@bnoordhuis.nl>
Sat, 30 Mar 2013 00:04:00 +0000 (01:04 +0100)
configure
node.gyp

index a5a18e3..09f3c40 100755 (executable)
--- a/configure
+++ b/configure
@@ -468,7 +468,7 @@ def configure_node(o):
   # By default, enable DTrace on SunOS systems. Don't allow it on other
   # systems, since it won't work.  (The MacOS build process is different than
   # SunOS, and we haven't implemented it.)
-  if sys.platform.startswith('sunos'):
+  if sys.platform.startswith('sunos') or sys.platform.startswith('darwin'):
     o['variables']['node_use_dtrace'] = b(not options.without_dtrace)
   elif sys.platform.startswith('linux'):
     o['variables']['node_use_dtrace'] = 'false'
index b07a1e0..fc7e215 100644 (file)
--- a/node.gyp
+++ b/node.gyp
           'dependencies': [ 'node_dtrace_header' ],
           'include_dirs': [ '<(SHARED_INTERMEDIATE_DIR)' ],
           #
-          # node_dtrace_provider.cc and node_dtrace_ustack.cc do not actually
-          # exist.  They're here to trick GYP into linking the corresponding
-          # object files into the final "node" executable.  These files are
-          # generated by "dtrace -G" using custom actions below, and the
-          # GYP-generated Makefiles will properly build them when needed.
+          # DTrace is supported on solaris, mac, and bsd.  There are three
+          # object files associated with DTrace support, but they're not all
+          # used all the time:
+          #
+          #   node_dtrace.o           all configurations
+          #   node_dtrace_ustack.o    not supported on OS X
+          #   node_dtrace_provider.o  All except OS X.  "dtrace -G" is not
+          #                           used on OS X.
+          #
+          # Note that node_dtrace_provider.cc and node_dtrace_ustack.cc do not
+          # actually exist.  They're listed here to trick GYP into linking the
+          # corresponding object files into the final "node" executable.  These
+          # object files are generated by "dtrace -G" using custom actions
+          # below, and the GYP-generated Makefiles will properly build them when
+          # needed.
           #
           'sources': [
             'src/node_dtrace.cc',
-            'src/node_dtrace_provider.cc',
-            'src/node_dtrace_ustack.cc',
           ],
+          'conditions': [ [
+            'OS!="mac"', {
+              'sources': [
+                'src/node_dtrace_ustack.cc',
+                'src/node_dtrace_provider.cc',
+              ]
+            }
+          ] ]
         } ],
         [ 'node_use_systemtap=="true"', {
           'defines': [ 'HAVE_SYSTEMTAP=1', 'STAP_SDT_V1=1' ],
       'target_name': 'node_dtrace_provider',
       'type': 'none',
       'conditions': [
-        [ 'node_use_dtrace=="true"', {
+        [ 'node_use_dtrace=="true" and OS!="mac"', {
           'actions': [
             {
               'action_name': 'node_dtrace_provider_o',
       'target_name': 'node_dtrace_ustack',
       'type': 'none',
       'conditions': [
-        [ 'node_use_dtrace=="true"', {
+        [ 'node_use_dtrace=="true" and OS!="mac"', {
           'actions': [
             {
               'action_name': 'node_dtrace_ustack_constants',