OLD | NEW |
---|---|
1 # Copyright (c) 2012 Google Inc. All rights reserved. | 1 # Copyright (c) 2012 Google Inc. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 # Notes: | 5 # Notes: |
6 # | 6 # |
7 # This is all roughly based on the Makefile system used by the Linux | 7 # This is all roughly based on the Makefile system used by the Linux |
8 # kernel, but is a non-recursive make -- we put the entire dependency | 8 # kernel, but is a non-recursive make -- we put the entire dependency |
9 # graph in front of make and let it figure it out. | 9 # graph in front of make and let it figure it out. |
10 # | 10 # |
(...skipping 16 matching lines...) Expand all Loading... | |
27 import os | 27 import os |
28 import re | 28 import re |
29 import sys | 29 import sys |
30 | 30 |
31 generator_default_variables = { | 31 generator_default_variables = { |
32 'EXECUTABLE_PREFIX': '', | 32 'EXECUTABLE_PREFIX': '', |
33 'EXECUTABLE_SUFFIX': '', | 33 'EXECUTABLE_SUFFIX': '', |
34 'STATIC_LIB_PREFIX': 'lib', | 34 'STATIC_LIB_PREFIX': 'lib', |
35 'SHARED_LIB_PREFIX': 'lib', | 35 'SHARED_LIB_PREFIX': 'lib', |
36 'STATIC_LIB_SUFFIX': '.a', | 36 'STATIC_LIB_SUFFIX': '.a', |
37 'INTERMEDIATE_DIR': '$(obj).$(TOOLSET)/$(TARGET)/geni', | 37 'INTERMEDIATE_DIR': '$(obj)$(TOOLSET)/$(TARGET)/geni', |
38 'SHARED_INTERMEDIATE_DIR': '$(obj)/gen', | 38 'SHARED_INTERMEDIATE_DIR': '$(obj)/gen', |
39 'PRODUCT_DIR': '$(builddir)', | 39 'PRODUCT_DIR': '$(builddir)', |
40 'RULE_INPUT_ROOT': '%(INPUT_ROOT)s', # This gets expanded by Python. | 40 'RULE_INPUT_ROOT': '%(INPUT_ROOT)s', # This gets expanded by Python. |
41 'RULE_INPUT_DIRNAME': '%(INPUT_DIRNAME)s', # This gets expanded by Python. | 41 'RULE_INPUT_DIRNAME': '%(INPUT_DIRNAME)s', # This gets expanded by Python. |
42 'RULE_INPUT_PATH': '$(abspath $<)', | 42 'RULE_INPUT_PATH': '$(abspath $<)', |
43 'RULE_INPUT_EXT': '$(suffix $<)', | 43 'RULE_INPUT_EXT': '$(suffix $<)', |
44 'RULE_INPUT_NAME': '$(notdir $<)', | 44 'RULE_INPUT_NAME': '$(notdir $<)', |
45 | 45 |
46 # This appears unused --- ? | 46 # This appears unused --- ? |
47 'CONFIGURATION_NAME': '$(BUILDTYPE)', | 47 'CONFIGURATION_NAME': '$(BUILDTYPE)', |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
79 generator_extra_sources_for_rules = getattr(xcode_generator, | 79 generator_extra_sources_for_rules = getattr(xcode_generator, |
80 'generator_extra_sources_for_rules', []) | 80 'generator_extra_sources_for_rules', []) |
81 global COMPILABLE_EXTENSIONS | 81 global COMPILABLE_EXTENSIONS |
82 COMPILABLE_EXTENSIONS.update({'.m': 'objc', '.mm' : 'objcxx'}) | 82 COMPILABLE_EXTENSIONS.update({'.m': 'objc', '.mm' : 'objcxx'}) |
83 else: | 83 else: |
84 operating_system = flavor | 84 operating_system = flavor |
85 if flavor == 'android': | 85 if flavor == 'android': |
86 operating_system = 'linux' # Keep this legacy behavior for now. | 86 operating_system = 'linux' # Keep this legacy behavior for now. |
87 default_variables.setdefault('OS', operating_system) | 87 default_variables.setdefault('OS', operating_system) |
88 default_variables.setdefault('SHARED_LIB_SUFFIX', '.so') | 88 default_variables.setdefault('SHARED_LIB_SUFFIX', '.so') |
89 default_variables.setdefault('SHARED_LIB_DIR','$(builddir)/lib.$(TOOLSET)') | 89 default_variables.setdefault('SHARED_LIB_DIR','$(builddir)/lib$(TOOLSET)') |
90 default_variables.setdefault('LIB_DIR', '$(obj).$(TOOLSET)') | 90 default_variables.setdefault('LIB_DIR', '$(obj)$(TOOLSET)') |
91 | 91 |
92 | 92 |
93 def CalculateGeneratorInputInfo(params): | 93 def CalculateGeneratorInputInfo(params): |
94 """Calculate the generator specific info that gets fed to input (called by | 94 """Calculate the generator specific info that gets fed to input (called by |
95 gyp).""" | 95 gyp).""" |
96 generator_flags = params.get('generator_flags', {}) | 96 generator_flags = params.get('generator_flags', {}) |
97 android_ndk_version = generator_flags.get('android_ndk_version', None) | 97 android_ndk_version = generator_flags.get('android_ndk_version', None) |
98 # Android NDK requires a strict link order. | 98 # Android NDK requires a strict link order. |
99 if android_ndk_version: | 99 if android_ndk_version: |
100 global generator_wants_sorted_dependencies | 100 global generator_wants_sorted_dependencies |
(...skipping 13 matching lines...) Expand all Loading... | |
114 # correctly, the .d files have spaces replaced with another character. The .d | 114 # correctly, the .d files have spaces replaced with another character. The .d |
115 # file for | 115 # file for |
116 # Chromium\ Framework.framework/foo | 116 # Chromium\ Framework.framework/foo |
117 # is for example | 117 # is for example |
118 # out/Release/.deps/out/Release/Chromium?Framework.framework/foo | 118 # out/Release/.deps/out/Release/Chromium?Framework.framework/foo |
119 # This is the replacement character. | 119 # This is the replacement character. |
120 SPACE_REPLACEMENT = '?' | 120 SPACE_REPLACEMENT = '?' |
121 | 121 |
122 | 122 |
123 LINK_COMMANDS_LINUX = """\ | 123 LINK_COMMANDS_LINUX = """\ |
124 quiet_cmd_alink = AR($(TOOLSET)) $@ | 124 quiet_cmd_alink = AR$(QUIET_TOOLSET) $@ |
125 cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) crs $@ $(filter %.o,$^) | 125 cmd_alink = rm -f $@ && $(AR$(TOOLSET)) crs $@ $(filter %.o,$^) |
126 | 126 |
127 # Due to circular dependencies between libraries :(, we wrap the | 127 # Due to circular dependencies between libraries :(, we wrap the |
128 # special "figure out circular dependencies" flags around the entire | 128 # special "figure out circular dependencies" flags around the entire |
129 # input list during linking. | 129 # input list during linking. |
130 quiet_cmd_link = LINK($(TOOLSET)) $@ | 130 quiet_cmd_link = LINK$(QUIET_TOOLSET) $@ |
131 cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--s tart-group $(LD_INPUTS) -Wl,--end-group $(LIBS) | 131 cmd_link = $(LINK$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS$(TOOLSET)) -o $@ -Wl,--sta rt-group $(LD_INPUTS) -Wl,--end-group $(LIBS) |
132 | 132 |
133 # We support two kinds of shared objects (.so): | 133 # We support two kinds of shared objects (.so): |
134 # 1) shared_library, which is just bundling together many dependent libraries | 134 # 1) shared_library, which is just bundling together many dependent libraries |
135 # into a link line. | 135 # into a link line. |
136 # 2) loadable_module, which is generating a module intended for dlopen(). | 136 # 2) loadable_module, which is generating a module intended for dlopen(). |
137 # | 137 # |
138 # They differ only slightly: | 138 # They differ only slightly: |
139 # In the former case, we want to package all dependent code into the .so. | 139 # In the former case, we want to package all dependent code into the .so. |
140 # In the latter case, we want to package just the API exposed by the | 140 # In the latter case, we want to package just the API exposed by the |
141 # outermost module. | 141 # outermost module. |
142 # This means shared_library uses --whole-archive, while loadable_module doesn't. | 142 # This means shared_library uses --whole-archive, while loadable_module doesn't. |
143 # (Note that --whole-archive is incompatible with the --start-group used in | 143 # (Note that --whole-archive is incompatible with the --start-group used in |
144 # normal linking.) | 144 # normal linking.) |
145 | 145 |
146 # Other shared-object link notes: | 146 # Other shared-object link notes: |
147 # - Set SONAME to the library filename so our binaries don't reference | 147 # - Set SONAME to the library filename so our binaries don't reference |
148 # the local, absolute paths used on the link command-line. | 148 # the local, absolute paths used on the link command-line. |
149 quiet_cmd_solink = SOLINK($(TOOLSET)) $@ | 149 quiet_cmd_solink = SOLINK$(QUIET_TOOLSET) $@ |
150 cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl ,-soname=$(@F) -o $@ -Wl,--whole-archive $(LD_INPUTS) -Wl,--no-whole-archive $(L IBS) | 150 cmd_solink = $(LINK$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS$(TOOLSET)) -Wl,- soname=$(@F) -o $@ -Wl,--whole-archive $(LD_INPUTS) -Wl,--no-whole-archive $(LIB S) |
151 | 151 |
152 quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ | 152 quiet_cmd_solink_module = SOLINK_MODULE$(QUIET_TOOLSET) $@ |
153 cmd_solink_module = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSE T)) -Wl,-soname=$(@F) -o $@ -Wl,--start-group $(filter-out FORCE_DO_CMD, $^) -Wl ,--end-group $(LIBS) | 153 cmd_solink_module = $(LINK$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS$(TOOLSET) ) -Wl,-soname=$(@F) -o $@ -Wl,--start-group $(filter-out FORCE_DO_CMD, $^) -Wl,- -end-group $(LIBS) |
154 """ | 154 """ |
155 | 155 |
156 LINK_COMMANDS_MAC = """\ | 156 LINK_COMMANDS_MAC = """\ |
157 quiet_cmd_alink = LIBTOOL-STATIC $@ | 157 quiet_cmd_alink = LIBTOOL-STATIC $@ |
158 cmd_alink = rm -f $@ && ./gyp-mac-tool filter-libtool libtool -static -o $@ $(fi lter %.o,$^) | 158 cmd_alink = rm -f $@ && ./gyp-mac-tool filter-libtool libtool -static -o $@ $(fi lter %.o,$^) |
159 | 159 |
160 quiet_cmd_link = LINK($(TOOLSET)) $@ | 160 quiet_cmd_link = LINK$(QUIET_TOOLSET) $@ |
161 cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_ INPUTS) $(LIBS) | 161 cmd_link = $(LINK$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS$(TOOLSET)) -o "$@" $(LD_IN PUTS) $(LIBS) |
162 | 162 |
163 # TODO(thakis): Find out and document the difference between shared_library and | 163 # TODO(thakis): Find out and document the difference between shared_library and |
164 # loadable_module on mac. | 164 # loadable_module on mac. |
165 quiet_cmd_solink = SOLINK($(TOOLSET)) $@ | 165 quiet_cmd_solink = SOLINK$(QUIET_TOOLSET) $@ |
166 cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o "$@" $(LD_INPUTS) $(LIBS) | 166 cmd_solink = $(LINK$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS$(TOOLSET)) -o "$ @" $(LD_INPUTS) $(LIBS) |
167 | 167 |
168 # TODO(thakis): The solink_module rule is likely wrong. Xcode seems to pass | 168 # TODO(thakis): The solink_module rule is likely wrong. Xcode seems to pass |
169 # -bundle -single_module here (for osmesa.so). | 169 # -bundle -single_module here (for osmesa.so). |
170 quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ | 170 quiet_cmd_solink_module = SOLINK_MODULE$(QUIET_TOOLSET) $@ |
171 cmd_solink_module = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSE T)) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) | 171 cmd_solink_module = $(LINK$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS$(TOOLSET) ) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) |
172 """ | 172 """ |
173 | 173 |
174 LINK_COMMANDS_ANDROID = """\ | 174 LINK_COMMANDS_ANDROID = """\ |
175 quiet_cmd_alink = AR($(TOOLSET)) $@ | 175 quiet_cmd_alink = AR$(QUIET_TOOLSET) $@ |
176 cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) crs $@ $(filter %.o,$^) | 176 cmd_alink = rm -f $@ && $(AR$(TOOLSET)) crs $@ $(filter %.o,$^) |
177 | 177 |
178 # Due to circular dependencies between libraries :(, we wrap the | 178 # Due to circular dependencies between libraries :(, we wrap the |
179 # special "figure out circular dependencies" flags around the entire | 179 # special "figure out circular dependencies" flags around the entire |
180 # input list during linking. | 180 # input list during linking. |
181 quiet_cmd_link = LINK($(TOOLSET)) $@ | 181 quiet_cmd_link = LINK$(QUIET_TOOLSET) $@ |
182 quiet_cmd_link_host = LINK($(TOOLSET)) $@ | 182 quiet_cmd_link_host = LINK$(QUIET_TOOLSET) $@ |
183 cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--s tart-group $(LD_INPUTS) -Wl,--end-group $(LIBS) | 183 cmd_link = $(LINK$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS$(TOOLSET)) -o $@ -Wl,--sta rt-group $(LD_INPUTS) -Wl,--end-group $(LIBS) |
184 cmd_link_host = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $( LD_INPUTS) $(LIBS) | 184 cmd_link_host = $(LINK$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS$(TOOLSET)) -o $@ $(LD _INPUTS) $(LIBS) |
185 | 185 |
186 # Other shared-object link notes: | 186 # Other shared-object link notes: |
187 # - Set SONAME to the library filename so our binaries don't reference | 187 # - Set SONAME to the library filename so our binaries don't reference |
188 # the local, absolute paths used on the link command-line. | 188 # the local, absolute paths used on the link command-line. |
189 quiet_cmd_solink = SOLINK($(TOOLSET)) $@ | 189 quiet_cmd_solink = SOLINK$(QUIET_TOOLSET) $@ |
190 cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl ,-soname=$(@F) -o $@ -Wl,--whole-archive $(LD_INPUTS) -Wl,--no-whole-archive $(L IBS) | 190 cmd_solink = $(LINK$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS$(TOOLSET)) -Wl,- soname=$(@F) -o $@ -Wl,--whole-archive $(LD_INPUTS) -Wl,--no-whole-archive $(LIB S) |
191 | 191 |
192 quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ | 192 quiet_cmd_solink_module = SOLINK_MODULE$(QUIET_TOOLSET) $@ |
193 cmd_solink_module = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSE T)) -Wl,-soname=$(@F) -o $@ -Wl,--start-group $(filter-out FORCE_DO_CMD, $^) -Wl ,--end-group $(LIBS) | 193 cmd_solink_module = $(LINK$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS$(TOOLSET) ) -Wl,-soname=$(@F) -o $@ -Wl,--start-group $(filter-out FORCE_DO_CMD, $^) -Wl,- -end-group $(LIBS) |
194 quiet_cmd_solink_module_host = SOLINK_MODULE($(TOOLSET)) $@ | 194 quiet_cmd_solink_module_host = SOLINK_MODULE$(QUIET_TOOLSET) $@ |
195 cmd_solink_module_host = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(T OOLSET)) -Wl,-soname=$(@F) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) | 195 cmd_solink_module_host = $(LINK$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS$(TOO LSET)) -Wl,-soname=$(@F) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) |
196 """ | 196 """ |
197 | 197 |
198 | 198 |
199 # Header of toplevel Makefile. | 199 # Header of toplevel Makefile. |
200 # This should go into the build tree, but it's easier to keep it here for now. | 200 # This should go into the build tree, but it's easier to keep it here for now. |
201 SHARED_HEADER = ("""\ | 201 SHARED_HEADER = ("""\ |
202 # We borrow heavily from the kernel build setup, though we are simpler since | 202 # We borrow heavily from the kernel build setup, though we are simpler since |
203 # we don't have Kconfig tweaking settings on us. | 203 # we don't have Kconfig tweaking settings on us. |
204 | 204 |
205 # The implicit make rules have it looking for RCS files, among other things. | 205 # The implicit make rules have it looking for RCS files, among other things. |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
324 sed -e 1d -e 's|$$|:|' \ | 324 sed -e 1d -e 's|$$|:|' \ |
325 >> $(depfile) | 325 >> $(depfile) |
326 rm $(depfile).raw | 326 rm $(depfile).raw |
327 endef | 327 endef |
328 """ | 328 """ |
329 """ | 329 """ |
330 # Command definitions: | 330 # Command definitions: |
331 # - cmd_foo is the actual command to run; | 331 # - cmd_foo is the actual command to run; |
332 # - quiet_cmd_foo is the brief-output summary of the command. | 332 # - quiet_cmd_foo is the brief-output summary of the command. |
333 | 333 |
334 quiet_cmd_cc = CC($(TOOLSET)) $@ | 334 quiet_cmd_cc = CC$(QUIET_TOOLSET) $@ |
335 cmd_cc = $(CC.$(TOOLSET)) $(GYP_CFLAGS) $(DEPFLAGS) $(CFLAGS.$(TOOLSET)) -c -o $ @ $< | 335 cmd_cc = $(CC$(TOOLSET)) $(GYP_CFLAGS) $(DEPFLAGS) $(CFLAGS$(TOOLSET)) -c -o $@ $< |
336 | 336 |
337 quiet_cmd_cxx = CXX($(TOOLSET)) $@ | 337 quiet_cmd_cxx = CXX$(QUIET_TOOLSET) $@ |
338 cmd_cxx = $(CXX.$(TOOLSET)) $(GYP_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET)) - c -o $@ $< | 338 cmd_cxx = $(CXX$(TOOLSET)) $(GYP_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS$(TOOLSET)) -c -o $@ $< |
339 %(extra_commands)s | 339 %(extra_commands)s |
340 quiet_cmd_touch = TOUCH $@ | 340 quiet_cmd_touch = TOUCH $@ |
341 cmd_touch = touch $@ | 341 cmd_touch = touch $@ |
342 | 342 |
343 quiet_cmd_copy = COPY $@ | 343 quiet_cmd_copy = COPY $@ |
344 # send stderr to /dev/null to ignore messages when linking directories. | 344 # send stderr to /dev/null to ignore messages when linking directories. |
345 cmd_copy = ln -f "$<" "$@" 2>/dev/null || (rm -rf "$@" && cp -af "$<" "$@") | 345 cmd_copy = ln -f "$<" "$@" 2>/dev/null || (rm -rf "$@" && cp -af "$<" "$@") |
346 | 346 |
347 %(link_commands)s | 347 %(link_commands)s |
348 """ | 348 """ |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
434 %(default_target)s: | 434 %(default_target)s: |
435 | 435 |
436 # Use FORCE_DO_CMD to force a target to run. Should be coupled with | 436 # Use FORCE_DO_CMD to force a target to run. Should be coupled with |
437 # do_cmd. | 437 # do_cmd. |
438 .PHONY: FORCE_DO_CMD | 438 .PHONY: FORCE_DO_CMD |
439 FORCE_DO_CMD: | 439 FORCE_DO_CMD: |
440 | 440 |
441 """) | 441 """) |
442 | 442 |
443 SHARED_HEADER_MAC_COMMANDS = """ | 443 SHARED_HEADER_MAC_COMMANDS = """ |
444 quiet_cmd_objc = CXX($(TOOLSET)) $@ | 444 quiet_cmd_objc = CXX$(QUIET_TOOLSET) $@ |
445 cmd_objc = $(CC.$(TOOLSET)) $(GYP_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $< | 445 cmd_objc = $(CC$(TOOLSET)) $(GYP_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $< |
446 | 446 |
447 quiet_cmd_objcxx = CXX($(TOOLSET)) $@ | 447 quiet_cmd_objcxx = CXX$(QUIET_TOOLSET) $@ |
448 cmd_objcxx = $(CXX.$(TOOLSET)) $(GYP_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $< | 448 cmd_objcxx = $(CXX$(TOOLSET)) $(GYP_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $< |
449 | 449 |
450 # Commands for precompiled header files. | 450 # Commands for precompiled header files. |
451 quiet_cmd_pch_c = CXX($(TOOLSET)) $@ | 451 quiet_cmd_pch_c = CXX$(QUIET_TOOLSET) $@ |
452 cmd_pch_c = $(CC.$(TOOLSET)) $(GYP_PCH_CFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLSET) ) -c -o $@ $< | 452 cmd_pch_c = $(CC$(TOOLSET)) $(GYP_PCH_CFLAGS) $(DEPFLAGS) $(CXXFLAGS$(TOOLSET)) -c -o $@ $< |
453 quiet_cmd_pch_cc = CXX($(TOOLSET)) $@ | 453 quiet_cmd_pch_cc = CXX$(QUIET_TOOLSET) $@ |
454 cmd_pch_cc = $(CC.$(TOOLSET)) $(GYP_PCH_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS.$(TOOLS ET)) -c -o $@ $< | 454 cmd_pch_cc = $(CC$(TOOLSET)) $(GYP_PCH_CXXFLAGS) $(DEPFLAGS) $(CXXFLAGS$(TOOLSET )) -c -o $@ $< |
455 quiet_cmd_pch_m = CXX($(TOOLSET)) $@ | 455 quiet_cmd_pch_m = CXX$(QUIET_TOOLSET) $@ |
456 cmd_pch_m = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $< | 456 cmd_pch_m = $(CC$(TOOLSET)) $(GYP_PCH_OBJCFLAGS) $(DEPFLAGS) -c -o $@ $< |
457 quiet_cmd_pch_mm = CXX($(TOOLSET)) $@ | 457 quiet_cmd_pch_mm = CXX$(QUIET_TOOLSET) $@ |
458 cmd_pch_mm = $(CC.$(TOOLSET)) $(GYP_PCH_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $< | 458 cmd_pch_mm = $(CC$(TOOLSET)) $(GYP_PCH_OBJCXXFLAGS) $(DEPFLAGS) -c -o $@ $< |
459 | 459 |
460 # gyp-mac-tool is written next to the root Makefile by gyp. | 460 # gyp-mac-tool is written next to the root Makefile by gyp. |
461 # Use $(4) for the command, since $(2) and $(3) are used as flag by do_cmd | 461 # Use $(4) for the command, since $(2) and $(3) are used as flag by do_cmd |
462 # already. | 462 # already. |
463 quiet_cmd_mac_tool = MACTOOL $(4) $< | 463 quiet_cmd_mac_tool = MACTOOL $(4) $< |
464 cmd_mac_tool = ./gyp-mac-tool $(4) $< "$@" | 464 cmd_mac_tool = ./gyp-mac-tool $(4) $< "$@" |
465 | 465 |
466 quiet_cmd_mac_package_framework = PACKAGE FRAMEWORK $@ | 466 quiet_cmd_mac_package_framework = PACKAGE FRAMEWORK $@ |
467 cmd_mac_package_framework = ./gyp-mac-tool package-framework "$@" $(4) | 467 cmd_mac_package_framework = ./gyp-mac-tool package-framework "$@" $(4) |
468 | 468 |
469 quiet_cmd_infoplist = INFOPLIST $@ | 469 quiet_cmd_infoplist = INFOPLIST $@ |
470 cmd_infoplist = $(CC.$(TOOLSET)) -E -P -Wno-trigraphs -x c $(INFOPLIST_DEFINES) "$<" -o "$@" | 470 cmd_infoplist = $(CC$(TOOLSET)) -E -P -Wno-trigraphs -x c $(INFOPLIST_DEFINES) " $<" -o "$@" |
471 """ | 471 """ |
472 | 472 |
473 SHARED_HEADER_SUN_COMMANDS = """ | 473 SHARED_HEADER_SUN_COMMANDS = """ |
474 # gyp-sun-tool is written next to the root Makefile by gyp. | 474 # gyp-sun-tool is written next to the root Makefile by gyp. |
475 # Use $(4) for the command, since $(2) and $(3) are used as flag by do_cmd | 475 # Use $(4) for the command, since $(2) and $(3) are used as flag by do_cmd |
476 # already. | 476 # already. |
477 quiet_cmd_sun_tool = SUNTOOL $(4) $< | 477 quiet_cmd_sun_tool = SUNTOOL $(4) $< |
478 cmd_sun_tool = ./gyp-sun-tool $(4) $< "$@" | 478 cmd_sun_tool = ./gyp-sun-tool $(4) $< "$@" |
479 """ | 479 """ |
480 | 480 |
481 | 481 |
482 def WriteRootHeaderSuffixRules(writer): | 482 def WriteRootHeaderSuffixRules(writer): |
483 extensions = sorted(COMPILABLE_EXTENSIONS.keys(), key=str.lower) | 483 extensions = sorted(COMPILABLE_EXTENSIONS.keys(), key=str.lower) |
484 | 484 |
485 writer.write('# Suffix rules, putting all outputs into $(obj).\n') | 485 writer.write('# Suffix rules, putting all outputs into $(obj).\n') |
486 for ext in extensions: | 486 for ext in extensions: |
487 writer.write('$(obj).$(TOOLSET)/%%.o: $(srcdir)/%%%s FORCE_DO_CMD\n' % ext) | 487 writer.write('$(obj)$(TOOLSET)/%%.o: $(srcdir)/%%%s FORCE_DO_CMD\n' % ext) |
488 writer.write('\t@$(call do_cmd,%s,1)\n' % COMPILABLE_EXTENSIONS[ext]) | 488 writer.write('\t@$(call do_cmd,%s,1)\n' % COMPILABLE_EXTENSIONS[ext]) |
489 | 489 |
490 writer.write('\n# Try building from generated source, too.\n') | 490 writer.write('\n# Try building from generated source, too.\n') |
491 for ext in extensions: | 491 for ext in extensions: |
492 writer.write( | 492 writer.write( |
493 '$(obj).$(TOOLSET)/%%.o: $(obj).$(TOOLSET)/%%%s FORCE_DO_CMD\n' % ext) | 493 '$(obj)$(TOOLSET)/%%.o: $(obj)$(TOOLSET)/%%%s FORCE_DO_CMD\n' % ext) |
494 writer.write('\t@$(call do_cmd,%s,1)\n' % COMPILABLE_EXTENSIONS[ext]) | 494 writer.write('\t@$(call do_cmd,%s,1)\n' % COMPILABLE_EXTENSIONS[ext]) |
495 writer.write('\n') | 495 writer.write('\n') |
496 for ext in extensions: | 496 for ext in extensions: |
497 writer.write('$(obj).$(TOOLSET)/%%.o: $(obj)/%%%s FORCE_DO_CMD\n' % ext) | 497 writer.write('$(obj)$(TOOLSET)/%%.o: $(obj)/%%%s FORCE_DO_CMD\n' % ext) |
498 writer.write('\t@$(call do_cmd,%s,1)\n' % COMPILABLE_EXTENSIONS[ext]) | 498 writer.write('\t@$(call do_cmd,%s,1)\n' % COMPILABLE_EXTENSIONS[ext]) |
499 writer.write('\n') | 499 writer.write('\n') |
500 | 500 |
501 | 501 |
502 SHARED_HEADER_SUFFIX_RULES_COMMENT1 = ("""\ | 502 SHARED_HEADER_SUFFIX_RULES_COMMENT1 = ("""\ |
503 # Suffix rules, putting all outputs into $(obj). | 503 # Suffix rules, putting all outputs into $(obj). |
504 """) | 504 """) |
505 | 505 |
506 | 506 |
507 SHARED_HEADER_SUFFIX_RULES_COMMENT2 = ("""\ | 507 SHARED_HEADER_SUFFIX_RULES_COMMENT2 = ("""\ |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
637 self._num_outputs = 0 | 637 self._num_outputs = 0 |
638 | 638 |
639 self.suffix_rules_srcdir = {} | 639 self.suffix_rules_srcdir = {} |
640 self.suffix_rules_objdir1 = {} | 640 self.suffix_rules_objdir1 = {} |
641 self.suffix_rules_objdir2 = {} | 641 self.suffix_rules_objdir2 = {} |
642 | 642 |
643 # Generate suffix rules for all compilable extensions. | 643 # Generate suffix rules for all compilable extensions. |
644 for ext in COMPILABLE_EXTENSIONS.keys(): | 644 for ext in COMPILABLE_EXTENSIONS.keys(): |
645 # Suffix rules for source folder. | 645 # Suffix rules for source folder. |
646 self.suffix_rules_srcdir.update({ext: ("""\ | 646 self.suffix_rules_srcdir.update({ext: ("""\ |
647 $(obj).$(TOOLSET)/$(TARGET)/%%.o: $(srcdir)/%%%s FORCE_DO_CMD | 647 $(obj)$(TOOLSET)/$(TARGET)/%%.o: $(srcdir)/%%%s FORCE_DO_CMD |
648 @$(call do_cmd,%s,1) | 648 @$(call do_cmd,%s,1) |
649 """ % (ext, COMPILABLE_EXTENSIONS[ext]))}) | 649 """ % (ext, COMPILABLE_EXTENSIONS[ext]))}) |
650 | 650 |
651 # Suffix rules for generated source files. | 651 # Suffix rules for generated source files. |
652 self.suffix_rules_objdir1.update({ext: ("""\ | 652 self.suffix_rules_objdir1.update({ext: ("""\ |
653 $(obj).$(TOOLSET)/$(TARGET)/%%.o: $(obj).$(TOOLSET)/%%%s FORCE_DO_CMD | 653 $(obj)$(TOOLSET)/$(TARGET)/%%.o: $(obj)$(TOOLSET)/%%%s FORCE_DO_CMD |
654 @$(call do_cmd,%s,1) | 654 @$(call do_cmd,%s,1) |
655 """ % (ext, COMPILABLE_EXTENSIONS[ext]))}) | 655 """ % (ext, COMPILABLE_EXTENSIONS[ext]))}) |
656 self.suffix_rules_objdir2.update({ext: ("""\ | 656 self.suffix_rules_objdir2.update({ext: ("""\ |
657 $(obj).$(TOOLSET)/$(TARGET)/%%.o: $(obj)/%%%s FORCE_DO_CMD | 657 $(obj)$(TOOLSET)/$(TARGET)/%%.o: $(obj)/%%%s FORCE_DO_CMD |
658 @$(call do_cmd,%s,1) | 658 @$(call do_cmd,%s,1) |
659 """ % (ext, COMPILABLE_EXTENSIONS[ext]))}) | 659 """ % (ext, COMPILABLE_EXTENSIONS[ext]))}) |
660 | 660 |
661 | 661 |
662 def NumOutputs(self): | 662 def NumOutputs(self): |
663 return self._num_outputs | 663 return self._num_outputs |
664 | 664 |
665 | 665 |
666 def Write(self, qualified_target, base_path, output_filename, spec, configs, | 666 def Write(self, qualified_target, base_path, output_filename, spec, configs, |
667 part_of_all): | 667 part_of_all): |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
711 | 711 |
712 self._INSTALLABLE_TARGETS = ('executable', 'loadable_module', | 712 self._INSTALLABLE_TARGETS = ('executable', 'loadable_module', |
713 'shared_library') | 713 'shared_library') |
714 if self.type in self._INSTALLABLE_TARGETS: | 714 if self.type in self._INSTALLABLE_TARGETS: |
715 self.alias = os.path.basename(self.output) | 715 self.alias = os.path.basename(self.output) |
716 install_path = self._InstallableTargetInstallPath() | 716 install_path = self._InstallableTargetInstallPath() |
717 else: | 717 else: |
718 self.alias = self.output | 718 self.alias = self.output |
719 install_path = self.output | 719 install_path = self.output |
720 | 720 |
721 self.WriteLn("TOOLSET := " + self.toolset) | 721 if self.toolset == 'target': |
722 self.WriteLn("QUIET_TOOLSET :=") | |
723 self.WriteLn("TOOLSET :=") | |
724 else: | |
725 self.WriteLn("QUIET_TOOLSET := (%s)" % self.toolset) | |
726 self.WriteLn("TOOLSET := %s" % self._ToolsetSuffix()) | |
722 self.WriteLn("TARGET := " + self.target) | 727 self.WriteLn("TARGET := " + self.target) |
723 | 728 |
724 # Actions must come first, since they can generate more OBJs for use below. | 729 # Actions must come first, since they can generate more OBJs for use below. |
725 if 'actions' in spec: | 730 if 'actions' in spec: |
726 self.WriteActions(spec['actions'], extra_sources, extra_outputs, | 731 self.WriteActions(spec['actions'], extra_sources, extra_outputs, |
727 extra_mac_bundle_resources, part_of_all) | 732 extra_mac_bundle_resources, part_of_all) |
728 | 733 |
729 # Rules must be early like actions. | 734 # Rules must be early like actions. |
730 if 'rules' in spec: | 735 if 'rules' in spec: |
731 self.WriteRules(spec['rules'], extra_sources, extra_outputs, | 736 self.WriteRules(spec['rules'], extra_sources, extra_outputs, |
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1079 | 1084 |
1080 def WriteMacInfoPlist(self, bundle_deps): | 1085 def WriteMacInfoPlist(self, bundle_deps): |
1081 """Write Makefile code for bundle Info.plist files.""" | 1086 """Write Makefile code for bundle Info.plist files.""" |
1082 info_plist, out, defines, extra_env = gyp.xcode_emulation.GetMacInfoPlist( | 1087 info_plist, out, defines, extra_env = gyp.xcode_emulation.GetMacInfoPlist( |
1083 generator_default_variables['PRODUCT_DIR'], self.xcode_settings, | 1088 generator_default_variables['PRODUCT_DIR'], self.xcode_settings, |
1084 self.Absolutify) | 1089 self.Absolutify) |
1085 if not info_plist: | 1090 if not info_plist: |
1086 return | 1091 return |
1087 if defines: | 1092 if defines: |
1088 # Create an intermediate file to store preprocessed results. | 1093 # Create an intermediate file to store preprocessed results. |
1089 intermediate_plist = ('$(obj).$(TOOLSET)/$(TARGET)/' + | 1094 intermediate_plist = ('$(obj)$(TOOLSET)/$(TARGET)/' + |
1090 os.path.basename(info_plist)) | 1095 os.path.basename(info_plist)) |
1091 self.WriteList(defines, intermediate_plist + ': INFOPLIST_DEFINES', '-D', | 1096 self.WriteList(defines, intermediate_plist + ': INFOPLIST_DEFINES', '-D', |
1092 quoter=EscapeCppDefine) | 1097 quoter=EscapeCppDefine) |
1093 self.WriteMakeRule([intermediate_plist], [info_plist], | 1098 self.WriteMakeRule([intermediate_plist], [info_plist], |
1094 ['$(call do_cmd,infoplist)', | 1099 ['$(call do_cmd,infoplist)', |
1095 # "Convert" the plist so that any weird whitespace changes from the | 1100 # "Convert" the plist so that any weird whitespace changes from the |
1096 # preprocessor do not affect the XML parser in mac_tool. | 1101 # preprocessor do not affect the XML parser in mac_tool. |
1097 '@plutil -convert xml1 $@ $@']) | 1102 '@plutil -convert xml1 $@ $@']) |
1098 info_plist = intermediate_plist | 1103 info_plist = intermediate_plist |
1099 # plists can contain envvars and substitute them into the file. | 1104 # plists can contain envvars and substitute them into the file. |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1307 | 1312 |
1308 | 1313 |
1309 def ComputeOutput(self, spec): | 1314 def ComputeOutput(self, spec): |
1310 """Return the 'output' (full output path) of a gyp spec. | 1315 """Return the 'output' (full output path) of a gyp spec. |
1311 | 1316 |
1312 E.g., the loadable module 'foobar' in directory 'baz' will produce | 1317 E.g., the loadable module 'foobar' in directory 'baz' will produce |
1313 '$(obj)/baz/libfoobar.so' | 1318 '$(obj)/baz/libfoobar.so' |
1314 """ | 1319 """ |
1315 assert not self.is_mac_bundle | 1320 assert not self.is_mac_bundle |
1316 | 1321 |
1317 path = os.path.join('$(obj).' + self.toolset, self.path) | 1322 path = os.path.join('$(obj)' + self._ToolsetSuffix(), self.path) |
1318 if self.type == 'executable' or self._InstallImmediately(): | 1323 if self.type == 'executable' or self._InstallImmediately(): |
1319 path = '$(builddir)' | 1324 path = '$(builddir)' |
1320 path = spec.get('product_dir', path) | 1325 path = spec.get('product_dir', path) |
1321 return os.path.join(path, self.ComputeOutputBasename(spec)) | 1326 return os.path.join(path, self.ComputeOutputBasename(spec)) |
1322 | 1327 |
1323 | 1328 |
1324 def ComputeMacBundleOutput(self, spec): | 1329 def ComputeMacBundleOutput(self, spec): |
1325 """Return the 'output' (full output path) to a bundle output directory.""" | 1330 """Return the 'output' (full output path) to a bundle output directory.""" |
1326 assert self.is_mac_bundle | 1331 assert self.is_mac_bundle |
1327 path = generator_default_variables['PRODUCT_DIR'] | 1332 path = generator_default_variables['PRODUCT_DIR'] |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1396 QuoteSpaces(self.output), | 1401 QuoteSpaces(self.output), |
1397 QuoteSpaces(self.output_binary)) | 1402 QuoteSpaces(self.output_binary)) |
1398 if target_postbuild: | 1403 if target_postbuild: |
1399 target_postbuilds[configname] = target_postbuild | 1404 target_postbuilds[configname] = target_postbuild |
1400 else: | 1405 else: |
1401 ldflags = config.get('ldflags', []) | 1406 ldflags = config.get('ldflags', []) |
1402 # Compute an rpath for this output if needed. | 1407 # Compute an rpath for this output if needed. |
1403 if any(dep.endswith('.so') for dep in deps): | 1408 if any(dep.endswith('.so') for dep in deps): |
1404 # We want to get the literal string "$ORIGIN" into the link command, | 1409 # We want to get the literal string "$ORIGIN" into the link command, |
1405 # so we need lots of escaping. | 1410 # so we need lots of escaping. |
1406 ldflags.append(r'-Wl,-rpath=\$$ORIGIN/lib.%s/' % self.toolset) | 1411 ldflags.append(r'-Wl,-rpath=\$$ORIGIN/lib%s/' % self._ToolsetSuffix( )) |
1407 ldflags.append(r'-Wl,-rpath-link=\$(builddir)/lib.%s/' % | 1412 ldflags.append(r'-Wl,-rpath-link=\$(builddir)/lib%s/' % |
1408 self.toolset) | 1413 self._ToolsetSuffix()) |
1409 self.WriteList(ldflags, 'LDFLAGS_%s' % configname) | 1414 self.WriteList(ldflags, 'LDFLAGS_%s' % configname) |
1410 libraries = spec.get('libraries') | 1415 libraries = spec.get('libraries') |
1411 if libraries: | 1416 if libraries: |
1412 # Remove duplicate entries | 1417 # Remove duplicate entries |
1413 libraries = gyp.common.uniquer(libraries) | 1418 libraries = gyp.common.uniquer(libraries) |
1414 if self.flavor == 'mac': | 1419 if self.flavor == 'mac': |
1415 libraries = self.xcode_settings.AdjustLibraries(libraries) | 1420 libraries = self.xcode_settings.AdjustLibraries(libraries) |
1416 self.WriteList(libraries, 'LIBS') | 1421 self.WriteList(libraries, 'LIBS') |
1417 self.WriteLn('%s: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE))' % | 1422 self.WriteLn('%s: GYP_LDFLAGS := $(LDFLAGS_$(BUILDTYPE))' % |
1418 QuoteSpaces(self.output_binary)) | 1423 QuoteSpaces(self.output_binary)) |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1792 # the escaped space does the right thing. For | 1797 # the escaped space does the right thing. For |
1793 # export foo := a\ b | 1798 # export foo := a\ b |
1794 # it does not -- the backslash is written to the env as literal character. | 1799 # it does not -- the backslash is written to the env as literal character. |
1795 # So don't escape spaces in |env[k]|. | 1800 # So don't escape spaces in |env[k]|. |
1796 self.WriteLn('%s: export %s := %s' % (QuoteSpaces(target), k, env[k])) | 1801 self.WriteLn('%s: export %s := %s' % (QuoteSpaces(target), k, env[k])) |
1797 | 1802 |
1798 | 1803 |
1799 def Objectify(self, path): | 1804 def Objectify(self, path): |
1800 """Convert a path to its output directory form.""" | 1805 """Convert a path to its output directory form.""" |
1801 if '$(' in path: | 1806 if '$(' in path: |
1802 path = path.replace('$(obj)/', '$(obj).%s/$(TARGET)/' % self.toolset) | 1807 path = path.replace('$(obj)/', '$(obj)%s/$(TARGET)/' % self._ToolsetSuffix ()) |
Nico
2012/02/16 20:30:08
80 COLS!!!!!!!!!!!!
| |
1803 return path | 1808 return path |
1804 return '$(obj).%s/$(TARGET)/%s' % (self.toolset, path) | 1809 return '$(obj)%s/$(TARGET)/%s' % (self._ToolsetSuffix(), path) |
1805 | 1810 |
1806 | 1811 |
1807 def Pchify(self, path, lang): | 1812 def Pchify(self, path, lang): |
1808 """Convert a prefix header path to its output directory form.""" | 1813 """Convert a prefix header path to its output directory form.""" |
1809 path = self.Absolutify(path) | 1814 path = self.Absolutify(path) |
1810 if '$(' in path: | 1815 if '$(' in path: |
1811 path = path.replace('$(obj)/', '$(obj).%s/$(TARGET)/pch-%s' % | 1816 path = path.replace('$(obj)/', '$(obj)%s/$(TARGET)/pch-%s' % |
1812 (self.toolset, lang)) | 1817 (self._ToolsetSuffix(), lang)) |
1813 return path | 1818 return path |
1814 return '$(obj).%s/$(TARGET)/pch-%s/%s' % (self.toolset, lang, path) | 1819 return '$(obj)%s/$(TARGET)/pch-%s/%s' % (self._ToolsetSuffix(), lang, path) |
1815 | 1820 |
1816 | 1821 |
1817 def Absolutify(self, path): | 1822 def Absolutify(self, path): |
1818 """Convert a subdirectory-relative path into a base-relative path. | 1823 """Convert a subdirectory-relative path into a base-relative path. |
1819 Skips over paths that contain variables.""" | 1824 Skips over paths that contain variables.""" |
1820 if '$(' in path: | 1825 if '$(' in path: |
1821 # path is no existing file in this case, but calling normpath is still | 1826 # path is no existing file in this case, but calling normpath is still |
1822 # important for trimming trailing slashes. | 1827 # important for trimming trailing slashes. |
1823 return os.path.normpath(path) | 1828 return os.path.normpath(path) |
1824 return os.path.normpath(os.path.join(self.path, path)) | 1829 return os.path.normpath(os.path.join(self.path, path)) |
(...skipping 15 matching lines...) Expand all Loading... | |
1840 return path | 1845 return path |
1841 | 1846 |
1842 | 1847 |
1843 def _InstallableTargetInstallPath(self): | 1848 def _InstallableTargetInstallPath(self): |
1844 """Returns the location of the final output for an installable target.""" | 1849 """Returns the location of the final output for an installable target.""" |
1845 # Xcode puts shared_library results into PRODUCT_DIR, and some gyp files | 1850 # Xcode puts shared_library results into PRODUCT_DIR, and some gyp files |
1846 # rely on this. Emulate this behavior for mac. | 1851 # rely on this. Emulate this behavior for mac. |
1847 if self.type == 'shared_library' and self.flavor != 'mac': | 1852 if self.type == 'shared_library' and self.flavor != 'mac': |
1848 # Install all shared libs into a common directory (per toolset) for | 1853 # Install all shared libs into a common directory (per toolset) for |
1849 # convenient access with LD_LIBRARY_PATH. | 1854 # convenient access with LD_LIBRARY_PATH. |
1850 return '$(builddir)/lib.%s/%s' % (self.toolset, self.alias) | 1855 return '$(builddir)/lib%s/%s' % (self._ToolsetSuffix(), self.alias) |
1851 return '$(builddir)/' + self.alias | 1856 return '$(builddir)/' + self.alias |
1852 | 1857 |
1858 def _ToolsetSuffix(self): | |
1859 """Return a suffix suitable for a path that is unique to the current | |
1860 toolset.""" | |
1861 assert self.toolset # 'target' maps to '', so don't allow '' as input. | |
Nico
2012/02/16 20:30:08
s/#/, "/ maybe
| |
1862 if self.toolset == 'target': | |
1863 return '' | |
1864 return '.' + self.toolset | |
1853 | 1865 |
1854 def WriteAutoRegenerationRule(params, root_makefile, makefile_name, | 1866 def WriteAutoRegenerationRule(params, root_makefile, makefile_name, |
1855 build_files): | 1867 build_files): |
1856 """Write the target to regenerate the Makefile.""" | 1868 """Write the target to regenerate the Makefile.""" |
1857 options = params['options'] | 1869 options = params['options'] |
1858 build_files_args = [gyp.common.RelativePath(filename, options.toplevel_dir) | 1870 build_files_args = [gyp.common.RelativePath(filename, options.toplevel_dir) |
1859 for filename in params['build_files_arg']] | 1871 for filename in params['build_files_arg']] |
1860 gyp_binary = gyp.common.FixIfRelativePath(params['gyp_binary'], | 1872 gyp_binary = gyp.common.FixIfRelativePath(params['gyp_binary'], |
1861 options.toplevel_dir) | 1873 options.toplevel_dir) |
1862 if not gyp_binary.startswith(os.sep): | 1874 if not gyp_binary.startswith(os.sep): |
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2099 # Add a check to make sure we tried to process all the .d files. | 2111 # Add a check to make sure we tried to process all the .d files. |
2100 all_deps += """ | 2112 all_deps += """ |
2101 ifneq ($(word %(last)d,$(d_files)),) | 2113 ifneq ($(word %(last)d,$(d_files)),) |
2102 $(error Found unprocessed dependency files (gyp didn't generate enough rules !)) | 2114 $(error Found unprocessed dependency files (gyp didn't generate enough rules !)) |
2103 endif | 2115 endif |
2104 """ % { 'last': ((num_outputs / 1000) + 1) * 1000 + 1 } | 2116 """ % { 'last': ((num_outputs / 1000) + 1) * 1000 + 1 } |
2105 | 2117 |
2106 root_makefile.write(SHARED_FOOTER % { 'generate_all_deps': all_deps }) | 2118 root_makefile.write(SHARED_FOOTER % { 'generate_all_deps': all_deps }) |
2107 | 2119 |
2108 root_makefile.close() | 2120 root_makefile.close() |
OLD | NEW |