Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Side by Side Diff: pylib/gyp/generator/ninja.py

Issue 11821060: Change ninja rpath generation to be more like make. Base URL: http://gyp.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | test/linux/gyptest-implicit-rpath.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2013 Google Inc. All rights reserved. 1 # Copyright (c) 2013 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 import copy 5 import copy
6 import hashlib 6 import hashlib
7 import multiprocessing 7 import multiprocessing
8 import os.path 8 import os.path
9 import re 9 import re
10 import signal 10 import signal
(...skipping 880 matching lines...) Expand 10 before | Expand all | Expand 10 after
891 link_deps.extend(list(extra_link_deps)) 891 link_deps.extend(list(extra_link_deps))
892 892
893 extra_bindings = [] 893 extra_bindings = []
894 if self.is_mac_bundle: 894 if self.is_mac_bundle:
895 output = self.ComputeMacBundleBinaryOutput() 895 output = self.ComputeMacBundleBinaryOutput()
896 else: 896 else:
897 output = self.ComputeOutput(spec) 897 output = self.ComputeOutput(spec)
898 extra_bindings.append(('postbuilds', 898 extra_bindings.append(('postbuilds',
899 self.GetPostbuildCommand(spec, output, output))) 899 self.GetPostbuildCommand(spec, output, output)))
900 900
901 is_executable = spec['type'] == 'executable'
901 if self.flavor == 'mac': 902 if self.flavor == 'mac':
902 ldflags = self.xcode_settings.GetLdflags(config_name, 903 ldflags = self.xcode_settings.GetLdflags(config_name,
903 self.ExpandSpecial(generator_default_variables['PRODUCT_DIR']), 904 self.ExpandSpecial(generator_default_variables['PRODUCT_DIR']),
904 self.GypPathToNinja) 905 self.GypPathToNinja)
905 elif self.flavor == 'win': 906 elif self.flavor == 'win':
906 is_executable = spec['type'] == 'executable'
907 manifest_name = self.GypPathToUniqueOutput( 907 manifest_name = self.GypPathToUniqueOutput(
908 self.ComputeOutputFileName(spec)) 908 self.ComputeOutputFileName(spec))
909 ldflags, manifest_files = self.msvs_settings.GetLdflags(config_name, 909 ldflags, manifest_files = self.msvs_settings.GetLdflags(config_name,
910 self.GypPathToNinja, self.ExpandSpecial, manifest_name, is_executable) 910 self.GypPathToNinja, self.ExpandSpecial, manifest_name, is_executable)
911 self.WriteVariableList('manifests', manifest_files) 911 self.WriteVariableList('manifests', manifest_files)
912 else: 912 else:
913 ldflags = config.get('ldflags', []) 913 ldflags = config.get('ldflags', [])
914 if is_executable and len(solibs):
915 ldflags.append('-Wl,-rpath=\$$ORIGIN/lib/')
914 self.WriteVariableList('ldflags', 916 self.WriteVariableList('ldflags',
915 gyp.common.uniquer(map(self.ExpandSpecial, 917 gyp.common.uniquer(map(self.ExpandSpecial,
916 ldflags))) 918 ldflags)))
917 919
918 libraries = gyp.common.uniquer(map(self.ExpandSpecial, 920 libraries = gyp.common.uniquer(map(self.ExpandSpecial,
919 spec.get('libraries', []))) 921 spec.get('libraries', [])))
920 if self.flavor == 'mac': 922 if self.flavor == 'mac':
921 libraries = self.xcode_settings.AdjustLibraries(libraries) 923 libraries = self.xcode_settings.AdjustLibraries(libraries)
922 elif self.flavor == 'win': 924 elif self.flavor == 'win':
923 libraries = self.msvs_settings.AdjustLibraries(libraries) 925 libraries = self.msvs_settings.AdjustLibraries(libraries)
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after
1548 '$libs'})) 1550 '$libs'}))
1549 master_ninja.rule( 1551 master_ninja.rule(
1550 'solink_module', 1552 'solink_module',
1551 description='SOLINK(module) $lib', 1553 description='SOLINK(module) $lib',
1552 restat=True, 1554 restat=True,
1553 command=(mtime_preserving_solink_base % { 1555 command=(mtime_preserving_solink_base % {
1554 'suffix': '-Wl,--start-group $in $solibs -Wl,--end-group $libs'})) 1556 'suffix': '-Wl,--start-group $in $solibs -Wl,--end-group $libs'}))
1555 master_ninja.rule( 1557 master_ninja.rule(
1556 'link', 1558 'link',
1557 description='LINK $out', 1559 description='LINK $out',
1558 command=('$ld $ldflags -o $out -Wl,-rpath=\$$ORIGIN/lib ' 1560 command=('$ld $ldflags -o $out '
1559 '-Wl,--start-group $in $solibs -Wl,--end-group $libs')) 1561 '-Wl,--start-group $in $solibs -Wl,--end-group $libs'))
1560 elif flavor == 'win': 1562 elif flavor == 'win':
1561 master_ninja.rule( 1563 master_ninja.rule(
1562 'alink', 1564 'alink',
1563 description='LIB $out', 1565 description='LIB $out',
1564 command=('%s gyp-win-tool link-wrapper $arch ' 1566 command=('%s gyp-win-tool link-wrapper $arch '
1565 '$ar /nologo /ignore:4221 /OUT:$out @$out.rsp' % 1567 '$ar /nologo /ignore:4221 /OUT:$out @$out.rsp' %
1566 sys.executable), 1568 sys.executable),
1567 rspfile='$out.rsp', 1569 rspfile='$out.rsp',
1568 rspfile_content='$in_newline $libflags') 1570 rspfile_content='$in_newline $libflags')
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
1786 arglists.append( 1788 arglists.append(
1787 (target_list, target_dicts, data, params, config_name)) 1789 (target_list, target_dicts, data, params, config_name))
1788 pool.map(CallGenerateOutputForConfig, arglists) 1790 pool.map(CallGenerateOutputForConfig, arglists)
1789 except KeyboardInterrupt, e: 1791 except KeyboardInterrupt, e:
1790 pool.terminate() 1792 pool.terminate()
1791 raise e 1793 raise e
1792 else: 1794 else:
1793 for config_name in config_names: 1795 for config_name in config_names:
1794 GenerateOutputForConfig(target_list, target_dicts, data, params, 1796 GenerateOutputForConfig(target_list, target_dicts, data, params,
1795 config_name) 1797 config_name)
OLDNEW
« no previous file with comments | « no previous file | test/linux/gyptest-implicit-rpath.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698