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

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

Issue 23789004: ninja&make/mac: Give loadable_modules type MH_BUNDLE. (Closed) Base URL: http://gyp.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 3 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
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 1625 matching lines...) Expand 10 before | Expand all | Expand 10 after
1636 # Chromium's ffmpeg c99conv.py currently looks for a 'cc =' line in 1636 # Chromium's ffmpeg c99conv.py currently looks for a 'cc =' line in
1637 # build.ninja so needs something valid here. http://crbug.com/233985 1637 # build.ninja so needs something valid here. http://crbug.com/233985
1638 cc = 'cl.exe' 1638 cc = 'cl.exe'
1639 cxx = 'cl.exe' 1639 cxx = 'cl.exe'
1640 ld = 'link.exe' 1640 ld = 'link.exe'
1641 ld_host = '$ld' 1641 ld_host = '$ld'
1642 else: 1642 else:
1643 cc = 'gcc' 1643 cc = 'gcc'
1644 cxx = 'g++' 1644 cxx = 'g++'
1645 ld = '$cxx' 1645 ld = '$cxx'
1646 ld_c = '$cc'
1646 ld_host = '$cxx_host' 1647 ld_host = '$cxx_host'
1647 1648
1648 cc_host = None 1649 cc_host = None
1649 cxx_host = None 1650 cxx_host = None
1650 cc_host_global_setting = None 1651 cc_host_global_setting = None
1651 cxx_host_global_setting = None 1652 cxx_host_global_setting = None
1652 1653
1653 build_file, _, _ = gyp.common.ParseQualifiedTarget(target_list[0]) 1654 build_file, _, _ = gyp.common.ParseQualifiedTarget(target_list[0])
1654 make_global_settings = data[build_file].get('make_global_settings', []) 1655 make_global_settings = data[build_file].get('make_global_settings', [])
1655 build_to_root = gyp.common.InvertRelativePath(build_dir, 1656 build_to_root = gyp.common.InvertRelativePath(build_dir,
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
1888 './gyp-mac-tool filter-libtool libtool $libtool_flags ' 1889 './gyp-mac-tool filter-libtool libtool $libtool_flags '
1889 '-static -o $out $in' 1890 '-static -o $out $in'
1890 '$postbuilds') 1891 '$postbuilds')
1891 master_ninja.rule( 1892 master_ninja.rule(
1892 'lipo', 1893 'lipo',
1893 description='LIPO $out, POSTBUILDS', 1894 description='LIPO $out, POSTBUILDS',
1894 command='rm -f $out && lipo -create $in -output $out$postbuilds') 1895 command='rm -f $out && lipo -create $in -output $out$postbuilds')
1895 1896
1896 # Record the public interface of $lib in $lib.TOC. See the corresponding 1897 # Record the public interface of $lib in $lib.TOC. See the corresponding
1897 # comment in the posix section above for details. 1898 # comment in the posix section above for details.
1898 solink_base = '$ld -shared $ldflags -o $lib %(suffix)s' 1899 solink_base = '$ld %(type)s $ldflags -o $lib %(suffix)s'
1899 mtime_preserving_solink_base = ( 1900 mtime_preserving_solink_base = (
1900 'if [ ! -e $lib -o ! -e ${lib}.TOC ] || ' 1901 'if [ ! -e $lib -o ! -e ${lib}.TOC ] || '
1901 # Always force dependent targets to relink if this library 1902 # Always force dependent targets to relink if this library
1902 # reexports something. Handling this correctly would require 1903 # reexports something. Handling this correctly would require
1903 # recursive TOC dumping but this is rare in practice, so punt. 1904 # recursive TOC dumping but this is rare in practice, so punt.
1904 'otool -l $lib | grep -q LC_REEXPORT_DYLIB ; then ' 1905 'otool -l $lib | grep -q LC_REEXPORT_DYLIB ; then '
1905 '%(solink)s && %(extract_toc)s > ${lib}.TOC; ' 1906 '%(solink)s && %(extract_toc)s > ${lib}.TOC; '
1906 'else ' 1907 'else '
1907 '%(solink)s && %(extract_toc)s > ${lib}.tmp && ' 1908 '%(solink)s && %(extract_toc)s > ${lib}.tmp && '
1908 'if ! cmp -s ${lib}.tmp ${lib}.TOC; then ' 1909 'if ! cmp -s ${lib}.tmp ${lib}.TOC; then '
1909 'mv ${lib}.tmp ${lib}.TOC ; ' 1910 'mv ${lib}.tmp ${lib}.TOC ; '
1910 'fi; ' 1911 'fi; '
1911 'fi' 1912 'fi'
1912 % { 'solink': solink_base, 1913 % { 'solink': solink_base,
1913 'extract_toc': 1914 'extract_toc':
1914 '{ otool -l $lib | grep LC_ID_DYLIB -A 5; ' 1915 '{ otool -l $lib | grep LC_ID_DYLIB -A 5; '
1915 'nm -gP $lib | cut -f1-2 -d\' \' | grep -v U$$; true; }'}) 1916 'nm -gP $lib | cut -f1-2 -d\' \' | grep -v U$$; true; }'})
1916 1917
1917 # TODO(thakis): The solink_module rule is likely wrong. Xcode seems to pass
1918 # -bundle -single_module here (for osmesa.so).
1919 solink_suffix = '$in $solibs $libs$postbuilds' 1918 solink_suffix = '$in $solibs $libs$postbuilds'
1920 master_ninja.rule( 1919 master_ninja.rule(
1921 'solink', 1920 'solink',
1922 description='SOLINK $lib, POSTBUILDS', 1921 description='SOLINK $lib, POSTBUILDS',
1923 restat=True, 1922 restat=True,
1924 command=mtime_preserving_solink_base % {'suffix':solink_suffix}, 1923 command=mtime_preserving_solink_base % {'suffix': solink_suffix,
1924 'type': '-shared'},
1925 pool='link_pool') 1925 pool='link_pool')
1926 master_ninja.rule( 1926 master_ninja.rule(
1927 'solink_notoc', 1927 'solink_notoc',
1928 description='SOLINK $lib, POSTBUILDS', 1928 description='SOLINK $lib, POSTBUILDS',
1929 restat=True, 1929 restat=True,
1930 command=solink_base % {'suffix':solink_suffix}, 1930 command=solink_base % {'suffix':solink_suffix, 'type': '-shared'},
Mark Mentovai 2013/09/05 14:29:37 Missing space before solink_suffix?
1931 pool='link_pool') 1931 pool='link_pool')
1932 1932
1933 solink_module_suffix = '$in $solibs $libs$postbuilds' 1933 solink_module_suffix = '$in $solibs $libs$postbuilds'
1934 master_ninja.rule( 1934 master_ninja.rule(
1935 'solink_module', 1935 'solink_module',
1936 description='SOLINK(module) $lib, POSTBUILDS', 1936 description='SOLINK(module) $lib, POSTBUILDS',
1937 restat=True, 1937 restat=True,
1938 command=mtime_preserving_solink_base % {'suffix':solink_module_suffix}, 1938 command=mtime_preserving_solink_base % {'suffix': solink_module_suffix,
1939 'type': '-bundle'},
1939 pool='link_pool') 1940 pool='link_pool')
1940 master_ninja.rule( 1941 master_ninja.rule(
1941 'solink_module_notoc', 1942 'solink_module_notoc',
1942 description='SOLINK(module) $lib, POSTBUILDS', 1943 description='SOLINK(module) $lib, POSTBUILDS',
1943 restat=True, 1944 restat=True,
1944 command=solink_base % {'suffix':solink_module_suffix}, 1945 command=solink_base % {'suffix': solink_module_suffix, 'type': '-bundle'},
1945 pool='link_pool') 1946 pool='link_pool')
1946 1947
1947 master_ninja.rule( 1948 master_ninja.rule(
1948 'link', 1949 'link',
1949 description='LINK $out, POSTBUILDS', 1950 description='LINK $out, POSTBUILDS',
1950 command=('$ld $ldflags -o $out ' 1951 command=('$ld $ldflags -o $out '
1951 '$in $solibs $libs$postbuilds'), 1952 '$in $solibs $libs$postbuilds'),
1952 pool='link_pool') 1953 pool='link_pool')
1953 master_ninja.rule( 1954 master_ninja.rule(
1954 'infoplist', 1955 'infoplist',
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
2086 arglists.append( 2087 arglists.append(
2087 (target_list, target_dicts, data, params, config_name)) 2088 (target_list, target_dicts, data, params, config_name))
2088 pool.map(CallGenerateOutputForConfig, arglists) 2089 pool.map(CallGenerateOutputForConfig, arglists)
2089 except KeyboardInterrupt, e: 2090 except KeyboardInterrupt, e:
2090 pool.terminate() 2091 pool.terminate()
2091 raise e 2092 raise e
2092 else: 2093 else:
2093 for config_name in config_names: 2094 for config_name in config_names:
2094 GenerateOutputForConfig(target_list, target_dicts, data, params, 2095 GenerateOutputForConfig(target_list, target_dicts, data, params,
2095 config_name) 2096 config_name)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698