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

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

Issue 9401016: Fix .d for ninja on Windows (Closed) Base URL: http://gyp.googlecode.com/svn/trunk/
Patch Set: Created 8 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 | pylib/gyp/ninja_syntax.py » ('j') | pylib/gyp/ninja_syntax.py » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 import gyp 5 import gyp
6 import gyp.common 6 import gyp.common
7 import gyp.system_test 7 import gyp.system_test
8 import gyp.xcode_emulation 8 import gyp.xcode_emulation
9 import os.path 9 import os.path
10 import re 10 import re
(...skipping 813 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 path = self.ExpandSpecial(generator_default_variables['PRODUCT_DIR']) 824 path = self.ExpandSpecial(generator_default_variables['PRODUCT_DIR'])
825 return os.path.join(path, self.xcode_settings.GetExecutablePath()) 825 return os.path.join(path, self.xcode_settings.GetExecutablePath())
826 826
827 def ComputeOutputFileName(self, spec, type=None): 827 def ComputeOutputFileName(self, spec, type=None):
828 """Compute the filename of the final output for the current target.""" 828 """Compute the filename of the final output for the current target."""
829 if not type: 829 if not type:
830 type = spec['type'] 830 type = spec['type']
831 831
832 # Compute filename prefix: the product prefix, or a default for 832 # Compute filename prefix: the product prefix, or a default for
833 # the product type. 833 # the product type.
834 DEFAULT_PREFIX = { 834 if self.flavor == 'win':
Nico 2012/02/16 19:32:26 This should be !=, or you need to swap the branch
835 'loadable_module': 'lib', 835 DEFAULT_PREFIX = {
836 'shared_library': 'lib', 836 'loadable_module': 'lib',
837 'static_library': 'lib', 837 'shared_library': 'lib',
838 } 838 'static_library': 'lib',
839 }
840 else:
841 DEFAULT_PREFIX = {
842 'loadable_module': '',
843 'shared_library': '',
844 'static_library': '',
845 }
839 prefix = spec.get('product_prefix', DEFAULT_PREFIX.get(type, '')) 846 prefix = spec.get('product_prefix', DEFAULT_PREFIX.get(type, ''))
840 847
841 # Compute filename extension: the product extension, or a default 848 # Compute filename extension: the product extension, or a default
842 # for the product type. 849 # for the product type.
843 DEFAULT_EXTENSION = { 850 if self.flavor == 'win':
844 'static_library': 'a', 851 DEFAULT_EXTENSION = {
845 'loadable_module': 'so', 852 'static_library': 'lib',
846 'shared_library': 'so', 853 'loadable_module': 'dll',
847 } 854 'shared_library': 'dll',
855 'executable': 'exe',
856 }
857 else:
858 DEFAULT_EXTENSION = {
859 'static_library': 'a',
860 'loadable_module': 'so',
861 'shared_library': 'so',
862 }
848 extension = spec.get('product_extension', 863 extension = spec.get('product_extension',
849 DEFAULT_EXTENSION.get(type, '')) 864 DEFAULT_EXTENSION.get(type, ''))
850 if extension: 865 if extension:
851 extension = '.' + extension 866 extension = '.' + extension
852 867
853 if 'product_name' in spec: 868 if 'product_name' in spec:
854 # If we were given an explicit name, use that. 869 # If we were given an explicit name, use that.
855 target = spec['product_name'] 870 target = spec['product_name']
856 else: 871 else:
857 # Otherwise, derive a name from the target name. 872 # Otherwise, derive a name from the target name.
(...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after
1045 command=('$cc -MMD -MF $out.d $defines $includes $cflags $cflags_c ' 1060 command=('$cc -MMD -MF $out.d $defines $includes $cflags $cflags_c '
1046 '$cflags_pch_c -c $in -o $out'), 1061 '$cflags_pch_c -c $in -o $out'),
1047 depfile='$out.d') 1062 depfile='$out.d')
1048 master_ninja.rule( 1063 master_ninja.rule(
1049 'cxx', 1064 'cxx',
1050 description='CXX $out', 1065 description='CXX $out',
1051 command=('$cxx -MMD -MF $out.d $defines $includes $cflags $cflags_cc ' 1066 command=('$cxx -MMD -MF $out.d $defines $includes $cflags $cflags_cc '
1052 '$cflags_pch_cc -c $in -o $out'), 1067 '$cflags_pch_cc -c $in -o $out'),
1053 depfile='$out.d') 1068 depfile='$out.d')
1054 else: 1069 else:
1055 # TODO(scottmg): Decide how /showIncludes handling should work in ninja. 1070 # TODO(scottmg): Requires deplist branch of ninja for now (for
1071 # /showIncludes handling).
1056 master_ninja.rule( 1072 master_ninja.rule(
1057 'cc', 1073 'cc',
1058 description='CC $out', 1074 description='CC $out',
1059 command=('$cc /nologo $defines $includes $cflags $cflags_c ' 1075 command=('cmd /c $cc /nologo /showIncludes '
1060 '$cflags_pch_c /c $in /Fo$out'), 1076 '$defines $includes $cflags $cflags_c '
1061 depfile='$out.d') 1077 '$cflags_pch_c /c $in /Fo$out '
1078 '| ninja-deplist-helper -f cl -o $out.dl'),
1079 deplist='$out.dl')
1062 master_ninja.rule( 1080 master_ninja.rule(
1063 'cxx', 1081 'cxx',
1064 description='CXX $out', 1082 description='CXX $out',
1065 command=('$cxx /nologo $defines $includes $cflags $cflags_cc ' 1083 command=('cmd /c $cxx /nologo /showIncludes '
1066 '$cflags_pch_cc /c $in /Fo$out'), 1084 '$defines $includes $cflags $cflags_cc '
1067 depfile='$out.d') 1085 '$cflags_pch_cc /c $in /Fo$out '
1086 '| ninja-deplist-helper -f cl -o $out.dl'),
1087 deplist='$out.dl')
1068 1088
1069 if flavor != 'mac' and flavor != 'win': 1089 if flavor != 'mac' and flavor != 'win':
1070 master_ninja.rule( 1090 master_ninja.rule(
1071 'alink', 1091 'alink',
1072 description='AR $out', 1092 description='AR $out',
1073 command='rm -f $out && ar rcsT $out $in') 1093 command='rm -f $out && ar rcsT $out $in')
1074 master_ninja.rule( 1094 master_ninja.rule(
1075 'solink', 1095 'solink',
1076 description='SOLINK $out', 1096 description='SOLINK $out',
1077 command=('$ld -shared $ldflags -o $out -Wl,-soname=$soname ' 1097 command=('$ld -shared $ldflags -o $out -Wl,-soname=$soname '
1078 '-Wl,--whole-archive $in -Wl,--no-whole-archive $libs')) 1098 '-Wl,--whole-archive $in -Wl,--no-whole-archive $libs'))
1079 master_ninja.rule( 1099 master_ninja.rule(
1080 'solink_module', 1100 'solink_module',
1081 description='SOLINK(module) $out', 1101 description='SOLINK(module) $out',
1082 command=('$ld -shared $ldflags -o $out -Wl,-soname=$soname ' 1102 command=('$ld -shared $ldflags -o $out -Wl,-soname=$soname '
1083 '-Wl,--start-group $in -Wl,--end-group $libs')) 1103 '-Wl,--start-group $in -Wl,--end-group $libs'))
1084 master_ninja.rule( 1104 master_ninja.rule(
1085 'link', 1105 'link',
1086 description='LINK $out', 1106 description='LINK $out',
1087 command=('$ld $ldflags -o $out -Wl,-rpath=\$$ORIGIN/lib ' 1107 command=('$ld $ldflags -o $out -Wl,-rpath=\$$ORIGIN/lib '
1088 '-Wl,--start-group $in -Wl,--end-group $libs')) 1108 '-Wl,--start-group $in -Wl,--end-group $libs'))
1089 elif flavor == 'win': 1109 elif flavor == 'win':
1090 master_ninja.rule( 1110 master_ninja.rule(
1091 'alink', 1111 'alink',
1092 description='AR $out', 1112 description='AR $out',
1093 command='lib /nologo /OUT:$out.lib $in') 1113 command='lib /nologo /OUT:$out.lib $in')
1094 master_ninja.rule( 1114 master_ninja.rule(
1095 'solink', 1115 'solink',
1096 description='SOLINK $out', 1116 description='SOLINK $out',
1097 command=('$ld /nologo /DLL $ldflags /OUT:$out.dll $in $libs')) 1117 command=('$ld /nologo /DLL $ldflags /OUT:$out $in $libs'))
1098 master_ninja.rule( 1118 master_ninja.rule(
1099 'solink_module', 1119 'solink_module',
1100 description='SOLINK(module) $out', 1120 description='SOLINK(module) $out',
1101 command=('$ld /nologo /DLL $ldflags /OUT:$out.dll $in $libs')) 1121 command=('$ld /nologo /DLL $ldflags /OUT:$out $in $libs'))
1102 master_ninja.rule( 1122 master_ninja.rule(
1103 'link', 1123 'link',
1104 description='LINK $out', 1124 description='LINK $out',
1105 command=('$ld /nologo $ldflags /OUT:$out.exe $in $libs')) 1125 command=('$ld /nologo $ldflags /OUT:$out $in $libs'))
1106 else: 1126 else:
1107 master_ninja.rule( 1127 master_ninja.rule(
1108 'objc', 1128 'objc',
1109 description='OBJC $out', 1129 description='OBJC $out',
1110 command=('$cc -MMD -MF $out.d $defines $includes $cflags $cflags_objc ' 1130 command=('$cc -MMD -MF $out.d $defines $includes $cflags $cflags_objc '
1111 '$cflags_pch_objc -c $in -o $out'), 1131 '$cflags_pch_objc -c $in -o $out'),
1112 depfile='$out.d') 1132 depfile='$out.d')
1113 master_ninja.rule( 1133 master_ninja.rule(
1114 'objcxx', 1134 'objcxx',
1115 description='OBJCXX $out', 1135 description='OBJCXX $out',
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after
1223 1243
1224 user_config = params.get('generator_flags', {}).get('config', None) 1244 user_config = params.get('generator_flags', {}).get('config', None)
1225 if user_config: 1245 if user_config:
1226 GenerateOutputForConfig(target_list, target_dicts, data, params, 1246 GenerateOutputForConfig(target_list, target_dicts, data, params,
1227 user_config) 1247 user_config)
1228 else: 1248 else:
1229 config_names = target_dicts[target_list[0]]['configurations'].keys() 1249 config_names = target_dicts[target_list[0]]['configurations'].keys()
1230 for config_name in config_names: 1250 for config_name in config_names:
1231 GenerateOutputForConfig(target_list, target_dicts, data, params, 1251 GenerateOutputForConfig(target_list, target_dicts, data, params,
1232 config_name) 1252 config_name)
OLDNEW
« no previous file with comments | « no previous file | pylib/gyp/ninja_syntax.py » ('j') | pylib/gyp/ninja_syntax.py » ('J')

Powered by Google App Engine
This is Rietveld 408576698