Index: util/util.gyp |
diff --git a/util/util.gyp b/util/util.gyp |
index e2c4c01a38d201a12f68ce8a5bca0691a0f271e4..0264f63f72b77c0c00e8b49821e9f5978a9a4284 100644 |
--- a/util/util.gyp |
+++ b/util/util.gyp |
@@ -40,6 +40,7 @@ |
'mac/mac_util.h', |
'mac/service_management.cc', |
'mac/service_management.h', |
+ 'mach/child_port.defs', |
'mach/child_port_handshake.cc', |
'mach/child_port_handshake.h', |
'mach/child_port_server.cc', |
@@ -113,58 +114,50 @@ |
], |
'conditions': [ |
['OS=="mac"', { |
- 'actions': [ |
- { |
- 'action_name': 'mig child_port.defs', |
- 'variables': { |
- 'child_port_defs_file': 'mach/child_port.defs', |
- }, |
- 'inputs': [ |
- 'mach/mig.py', |
- '<(child_port_defs_file)', |
- ], |
- 'outputs': [ |
- '<(INTERMEDIATE_DIR)/util/mach/child_portUser.c', |
- '<(INTERMEDIATE_DIR)/util/mach/child_portServer.c', |
- '<(INTERMEDIATE_DIR)/util/mach/child_port.h', |
- '<(INTERMEDIATE_DIR)/util/mach/child_portServer.h', |
+ 'conditions': [ |
+ ['GENERATOR=="ninja"', { |
+ # ninja’s rules can’t deal with sources that have paths relative |
+ # to environment variables like SDKROOT. Copy the .defs files out |
+ # of SDKROOT and into a place they can be referenced without any |
+ # environment variables. |
+ 'copies': [ |
+ { |
+ 'destination': '<(INTERMEDIATE_DIR)/util/mach', |
+ 'files': [ |
+ '$(SDKROOT)/usr/include/mach/exc.defs', |
+ '$(SDKROOT)/usr/include/mach/mach_exc.defs', |
+ ], |
+ }, |
], |
- 'action': [ |
- 'python', '<@(_inputs)', '<@(_outputs)' |
+ 'sources': [ |
+ '<(INTERMEDIATE_DIR)/util/mach/exc.defs', |
+ '<(INTERMEDIATE_DIR)/util/mach/mach_exc.defs', |
], |
- 'process_outputs_as_sources': 1, |
- }, |
- { |
- 'action_name': 'mig exc.defs', |
- 'inputs': [ |
- 'mach/mig.py', |
+ }, { # else: GENERATOR!="ninja" |
+ # The Xcode generator does copies after rules, so the above trick |
+ # won’t work, but its rules tolerate sources with SDKROOT-relative |
+ # paths. |
+ 'sources': [ |
'$(SDKROOT)/usr/include/mach/exc.defs', |
+ '$(SDKROOT)/usr/include/mach/mach_exc.defs', |
], |
- 'outputs': [ |
- '<(INTERMEDIATE_DIR)/util/mach/excUser.c', |
- '<(INTERMEDIATE_DIR)/util/mach/excServer.c', |
- '<(INTERMEDIATE_DIR)/util/mach/exc.h', |
- '<(INTERMEDIATE_DIR)/util/mach/excServer.h', |
- ], |
- 'action': [ |
- 'python', '<@(_inputs)', '<@(_outputs)' |
- ], |
- 'process_outputs_as_sources': 1, |
- }, |
+ }], |
+ ], |
+ 'rules': [ |
{ |
- 'action_name': 'mig mach_exc.defs', |
+ 'rule_name': 'mig', |
+ 'extension': 'defs', |
'inputs': [ |
'mach/mig.py', |
- '$(SDKROOT)/usr/include/mach/mach_exc.defs', |
], |
'outputs': [ |
- '<(INTERMEDIATE_DIR)/util/mach/mach_excUser.c', |
- '<(INTERMEDIATE_DIR)/util/mach/mach_excServer.c', |
- '<(INTERMEDIATE_DIR)/util/mach/mach_exc.h', |
- '<(INTERMEDIATE_DIR)/util/mach/mach_excServer.h', |
+ '<(INTERMEDIATE_DIR)/util/mach/<(RULE_INPUT_ROOT)User.c', |
+ '<(INTERMEDIATE_DIR)/util/mach/<(RULE_INPUT_ROOT)Server.c', |
+ '<(INTERMEDIATE_DIR)/util/mach/<(RULE_INPUT_ROOT).h', |
+ '<(INTERMEDIATE_DIR)/util/mach/<(RULE_INPUT_ROOT)Server.h', |
], |
'action': [ |
- 'python', '<@(_inputs)', '<@(_outputs)' |
+ 'python', '<@(_inputs)', '<(RULE_INPUT_PATH)', '<@(_outputs)' |
], |
'process_outputs_as_sources': 1, |
}, |