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

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

Issue 169633003: ninja: Let TOC code use $lib instead of ${lib}. (Closed) Base URL: http://gyp.googlecode.com/svn/trunk/
Patch Set: Created 6 years, 10 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 | no next file » | 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 collections 5 import collections
6 import copy 6 import copy
7 import hashlib 7 import hashlib
8 import json 8 import json
9 import multiprocessing 9 import multiprocessing
10 import os.path 10 import os.path
(...skipping 1849 matching lines...) Expand 10 before | Expand all | Expand 10 after
1860 'alink_thin', 1860 'alink_thin',
1861 description='AR $out', 1861 description='AR $out',
1862 command='rm -f $out && $ar rcsT $out $in') 1862 command='rm -f $out && $ar rcsT $out $in')
1863 1863
1864 # This allows targets that only need to depend on $lib's API to declare an 1864 # This allows targets that only need to depend on $lib's API to declare an
1865 # order-only dependency on $lib.TOC and avoid relinking such downstream 1865 # order-only dependency on $lib.TOC and avoid relinking such downstream
1866 # dependencies when $lib changes only in non-public ways. 1866 # dependencies when $lib changes only in non-public ways.
1867 # The resulting string leaves an uninterpolated %{suffix} which 1867 # The resulting string leaves an uninterpolated %{suffix} which
1868 # is used in the final substitution below. 1868 # is used in the final substitution below.
1869 mtime_preserving_solink_base = ( 1869 mtime_preserving_solink_base = (
1870 'if [ ! -e $lib -o ! -e ${lib}.TOC ]; then ' 1870 'if [ ! -e $lib -o ! -e $lib.TOC ]; then '
1871 '%(solink)s && %(extract_toc)s > ${lib}.TOC; else ' 1871 '%(solink)s && %(extract_toc)s > $lib.TOC; else '
1872 '%(solink)s && %(extract_toc)s > ${lib}.tmp && ' 1872 '%(solink)s && %(extract_toc)s > $lib.tmp && '
1873 'if ! cmp -s ${lib}.tmp ${lib}.TOC; then mv ${lib}.tmp ${lib}.TOC ; ' 1873 'if ! cmp -s $lib.tmp $lib.TOC; then mv $lib.tmp $lib.TOC ; '
1874 'fi; fi' 1874 'fi; fi'
1875 % { 'solink': 1875 % { 'solink':
1876 '$ld -shared $ldflags -o $lib -Wl,-soname=$soname %(suffix)s', 1876 '$ld -shared $ldflags -o $lib -Wl,-soname=$soname %(suffix)s',
1877 'extract_toc': 1877 'extract_toc':
1878 ('{ readelf -d ${lib} | grep SONAME ; ' 1878 ('{ readelf -d $lib | grep SONAME ; '
1879 'nm -gD -f p ${lib} | cut -f1-2 -d\' \'; }')}) 1879 'nm -gD -f p $lib | cut -f1-2 -d\' \'; }')})
1880 1880
1881 master_ninja.rule( 1881 master_ninja.rule(
1882 'solink', 1882 'solink',
1883 description='SOLINK $lib', 1883 description='SOLINK $lib',
1884 restat=True, 1884 restat=True,
1885 command=(mtime_preserving_solink_base % { 1885 command=(mtime_preserving_solink_base % {
1886 'suffix': '-Wl,--whole-archive $in $solibs -Wl,--no-whole-archive ' 1886 'suffix': '-Wl,--whole-archive $in $solibs -Wl,--no-whole-archive '
1887 '$libs'}), 1887 '$libs'}),
1888 pool='link_pool') 1888 pool='link_pool')
1889 master_ninja.rule( 1889 master_ninja.rule(
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1935 '$postbuilds') 1935 '$postbuilds')
1936 master_ninja.rule( 1936 master_ninja.rule(
1937 'lipo', 1937 'lipo',
1938 description='LIPO $out, POSTBUILDS', 1938 description='LIPO $out, POSTBUILDS',
1939 command='rm -f $out && lipo -create $in -output $out$postbuilds') 1939 command='rm -f $out && lipo -create $in -output $out$postbuilds')
1940 1940
1941 # Record the public interface of $lib in $lib.TOC. See the corresponding 1941 # Record the public interface of $lib in $lib.TOC. See the corresponding
1942 # comment in the posix section above for details. 1942 # comment in the posix section above for details.
1943 solink_base = '$ld %(type)s $ldflags -o $lib %(suffix)s' 1943 solink_base = '$ld %(type)s $ldflags -o $lib %(suffix)s'
1944 mtime_preserving_solink_base = ( 1944 mtime_preserving_solink_base = (
1945 'if [ ! -e $lib -o ! -e ${lib}.TOC ] || ' 1945 'if [ ! -e $lib -o ! -e $lib.TOC ] || '
1946 # Always force dependent targets to relink if this library 1946 # Always force dependent targets to relink if this library
1947 # reexports something. Handling this correctly would require 1947 # reexports something. Handling this correctly would require
1948 # recursive TOC dumping but this is rare in practice, so punt. 1948 # recursive TOC dumping but this is rare in practice, so punt.
1949 'otool -l $lib | grep -q LC_REEXPORT_DYLIB ; then ' 1949 'otool -l $lib | grep -q LC_REEXPORT_DYLIB ; then '
1950 '%(solink)s && %(extract_toc)s > ${lib}.TOC; ' 1950 '%(solink)s && %(extract_toc)s > $lib.TOC; '
1951 'else ' 1951 'else '
1952 '%(solink)s && %(extract_toc)s > ${lib}.tmp && ' 1952 '%(solink)s && %(extract_toc)s > $lib.tmp && '
1953 'if ! cmp -s ${lib}.tmp ${lib}.TOC; then ' 1953 'if ! cmp -s $lib.tmp $lib.TOC; then '
1954 'mv ${lib}.tmp ${lib}.TOC ; ' 1954 'mv $lib.tmp $lib.TOC ; '
1955 'fi; ' 1955 'fi; '
1956 'fi' 1956 'fi'
1957 % { 'solink': solink_base, 1957 % { 'solink': solink_base,
1958 'extract_toc': 1958 'extract_toc':
1959 '{ otool -l $lib | grep LC_ID_DYLIB -A 5; ' 1959 '{ otool -l $lib | grep LC_ID_DYLIB -A 5; '
1960 'nm -gP $lib | cut -f1-2 -d\' \' | grep -v U$$; true; }'}) 1960 'nm -gP $lib | cut -f1-2 -d\' \' | grep -v U$$; true; }'})
1961 1961
1962 solink_suffix = '$in $solibs $libs$postbuilds' 1962 solink_suffix = '$in $solibs $libs$postbuilds'
1963 master_ninja.rule( 1963 master_ninja.rule(
1964 'solink', 1964 'solink',
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
2151 arglists.append( 2151 arglists.append(
2152 (target_list, target_dicts, data, params, config_name)) 2152 (target_list, target_dicts, data, params, config_name))
2153 pool.map(CallGenerateOutputForConfig, arglists) 2153 pool.map(CallGenerateOutputForConfig, arglists)
2154 except KeyboardInterrupt, e: 2154 except KeyboardInterrupt, e:
2155 pool.terminate() 2155 pool.terminate()
2156 raise e 2156 raise e
2157 else: 2157 else:
2158 for config_name in config_names: 2158 for config_name in config_names:
2159 GenerateOutputForConfig(target_list, target_dicts, data, params, 2159 GenerateOutputForConfig(target_list, target_dicts, data, params,
2160 config_name) 2160 config_name)
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698