Index: pylib/gyp/generator/make.py |
=================================================================== |
--- pylib/gyp/generator/make.py (revision 1468) |
+++ pylib/gyp/generator/make.py (working copy) |
@@ -62,6 +62,7 @@ |
"""Calculate additional variables for use in the build (called by gyp).""" |
cc_target = os.environ.get('CC.target', os.environ.get('CC', 'cc')) |
flavor = gyp.common.GetFlavor(params) |
+ default_variables.setdefault('HOST_OS', gyp.common.GetHostFlavor(params)) |
if flavor == 'mac': |
default_variables.setdefault('OS', 'mac') |
default_variables.setdefault('SHARED_LIB_SUFFIX', '.dylib') |
@@ -122,7 +123,6 @@ |
# This is the replacement character. |
SPACE_REPLACEMENT = '?' |
- |
Torne
2012/08/21 09:47:17
mistaken whitespace change
|
LINK_COMMANDS_LINUX = """\ |
quiet_cmd_alink = AR($(TOOLSET)) $@ |
cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) $(ARFLAGS.$(TOOLSET)) $@ $(filter %.o,$^) |
@@ -175,30 +175,25 @@ |
""" |
LINK_COMMANDS_ANDROID = """\ |
-quiet_cmd_alink = AR($(TOOLSET)) $@ |
-cmd_alink = rm -f $@ && $(AR.$(TOOLSET)) $(ARFLAGS.$(TOOLSET)) $@ $(filter %.o,$^) |
+quiet_cmd_alink_target = AR($(TOOLSET)) $@ |
+cmd_alink_target = rm -f $@ && $(AR.$(TOOLSET)) $(ARFLAGS.$(TOOLSET)) $@ $(filter %.o,$^) |
# Due to circular dependencies between libraries :(, we wrap the |
# special "figure out circular dependencies" flags around the entire |
# input list during linking. |
-quiet_cmd_link = LINK($(TOOLSET)) $@ |
-quiet_cmd_link_host = LINK($(TOOLSET)) $@ |
-cmd_link = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--start-group $(LD_INPUTS) -Wl,--end-group $(LIBS) |
-cmd_link_host = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ $(LD_INPUTS) $(LIBS) |
+quiet_cmd_link_target = LINK($(TOOLSET)) $@ |
+cmd_link_target = $(LINK.$(TOOLSET)) $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -o $@ -Wl,--start-group $(LD_INPUTS) -Wl,--end-group $(LIBS) |
# Other shared-object link notes: |
# - Set SONAME to the library filename so our binaries don't reference |
# the local, absolute paths used on the link command-line. |
-quiet_cmd_solink = SOLINK($(TOOLSET)) $@ |
-cmd_solink = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -o $@ -Wl,--whole-archive $(LD_INPUTS) -Wl,--no-whole-archive $(LIBS) |
+quiet_cmd_solink_target = SOLINK($(TOOLSET)) $@ |
+cmd_solink_target = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -o $@ -Wl,--whole-archive $(LD_INPUTS) -Wl,--no-whole-archive $(LIBS) |
-quiet_cmd_solink_module = SOLINK_MODULE($(TOOLSET)) $@ |
-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) |
-quiet_cmd_solink_module_host = SOLINK_MODULE($(TOOLSET)) $@ |
-cmd_solink_module_host = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -o $@ $(filter-out FORCE_DO_CMD, $^) $(LIBS) |
+quiet_cmd_solink_module_target = SOLINK_MODULE($(TOOLSET)) $@ |
+cmd_solink_module_target = $(LINK.$(TOOLSET)) -shared $(GYP_LDFLAGS) $(LDFLAGS.$(TOOLSET)) -Wl,-soname=$(@F) -o $@ -Wl,--start-group $(filter-out FORCE_DO_CMD, $^) -Wl,--end-group $(LIBS) |
""" |
- |
Torne
2012/08/21 09:47:17
mistaken whitespace change
|
# Header of toplevel Makefile. |
# This should go into the build tree, but it's easier to keep it here for now. |
SHARED_HEADER = ("""\ |
@@ -1506,8 +1501,8 @@ |
self.WriteLn('%s: LD_INPUTS := %s' % ( |
QuoteSpaces(self.output_binary), |
' '.join(map(QuoteSpaces, link_deps)))) |
- if self.toolset == 'host' and self.flavor == 'android': |
- self.WriteDoCmd([self.output_binary], link_deps, 'link_host', |
+ if self.toolset == 'target' and self.flavor == 'android': |
+ self.WriteDoCmd([self.output_binary], link_deps, 'link_target', |
part_of_all, postbuilds=postbuilds) |
else: |
self.WriteDoCmd([self.output_binary], link_deps, 'link', part_of_all, |
@@ -1517,20 +1512,29 @@ |
for link_dep in link_deps: |
assert ' ' not in link_dep, ( |
"Spaces in alink input filenames not supported (%s)" % link_dep) |
- self.WriteDoCmd([self.output_binary], link_deps, 'alink', part_of_all, |
- postbuilds=postbuilds) |
+ if self.toolset == 'target' and self.flavor == 'android': |
+ self.WriteDoCmd([self.output_binary], link_deps, 'alink_target', |
+ part_of_all, postbuilds=postbuilds) |
+ else: |
+ self.WriteDoCmd([self.output_binary], link_deps, 'alink', part_of_all, |
+ postbuilds=postbuilds) |
+ |
elif self.type == 'shared_library': |
self.WriteLn('%s: LD_INPUTS := %s' % ( |
QuoteSpaces(self.output_binary), |
' '.join(map(QuoteSpaces, link_deps)))) |
- self.WriteDoCmd([self.output_binary], link_deps, 'solink', part_of_all, |
- postbuilds=postbuilds) |
+ if self.toolset == 'target' and self.flavor == 'android': |
+ self.WriteDoCmd([self.output_binary], link_deps, 'solink_target', |
+ part_of_all, postbuilds=postbuilds) |
+ else: |
+ self.WriteDoCmd([self.output_binary], link_deps, 'solink', part_of_all, |
+ postbuilds=postbuilds) |
elif self.type == 'loadable_module': |
for link_dep in link_deps: |
assert ' ' not in link_dep, ( |
"Spaces in module input filenames not supported (%s)" % link_dep) |
- if self.toolset == 'host' and self.flavor == 'android': |
- self.WriteDoCmd([self.output_binary], link_deps, 'solink_module_host', |
+ if self.toolset == 'target' and self.flavor == 'android': |
+ self.WriteDoCmd([self.output_binary], link_deps, 'solink_module_target', |
part_of_all, postbuilds=postbuilds) |
else: |
self.WriteDoCmd( |
@@ -1919,6 +1923,7 @@ |
def GenerateOutput(target_list, target_dicts, data, params): |
options = params['options'] |
flavor = gyp.common.GetFlavor(params) |
+ host_flavor = gyp.common.GetHostFlavor(params) |
generator_flags = params.get('generator_flags', {}) |
builddir_name = generator_flags.get('output_dir', 'out') |
android_ndk_version = generator_flags.get('android_ndk_version', None) |
@@ -1973,28 +1978,38 @@ |
'extra_commands': '', |
'srcdir': srcdir, |
} |
- if flavor == 'mac': |
+ if host_flavor == 'mac': |
flock_command = './gyp-mac-tool flock' |
header_params.update({ |
'flock': flock_command, |
'flock_index': 2, |
'link_commands': LINK_COMMANDS_MAC, |
- 'extra_commands': SHARED_HEADER_MAC_COMMANDS, |
}) |
- elif flavor == 'android': |
+ elif host_flavor == 'solaris': |
+ flock_command = './gyp-sun-tool flock', |
header_params.update({ |
- 'link_commands': LINK_COMMANDS_ANDROID, |
+ 'flock': flock_command, |
+ 'flock_index': 2, |
}) |
+ elif host_flavor == 'freebsd': |
+ flock_command = 'lockf', |
+ header_params.update({ |
+ 'flock': flock_command, |
+ }) |
+ |
+ if flavor == 'mac': |
+ header_params.update({ |
+ 'extra_commands': SHARED_HEADER_MAC_COMMANDS, |
+ }) |
elif flavor == 'solaris': |
header_params.update({ |
- 'flock': './gyp-sun-tool flock', |
- 'flock_index': 2, |
'extra_commands': SHARED_HEADER_SUN_COMMANDS, |
}) |
- elif flavor == 'freebsd': |
+ elif flavor == 'android': |
header_params.update({ |
- 'flock': 'lockf', |
+ 'extra_commands': LINK_COMMANDS_ANDROID, |
}) |
+ |
header_params.update(RunSystemTests(flavor)) |
build_file, _, _ = gyp.common.ParseQualifiedTarget(target_list[0]) |
@@ -2006,7 +2021,7 @@ |
if key == 'LINK': |
make_global_settings += ('%s ?= %s $(builddir)/linker.lock %s\n' % |
(key, flock_command, value)) |
- elif key in ['CC', 'CXX']: |
+ elif key in ['CC', 'CXX', 'AR']: |
make_global_settings += ( |
'ifneq (,$(filter $(origin %s), undefined default))\n' % key) |
# Let gyp-time envvars win over global settings. |
@@ -2034,7 +2049,7 @@ |
# Put build-time support tools next to the root Makefile. |
dest_path = os.path.dirname(makefile_path) |
- gyp.common.CopyTool(flavor, dest_path) |
+ gyp.common.CopyTool(host_flavor, dest_path) |
# Find the list of targets that derive from the gyp file(s) being built. |
needed_targets = set() |