| OLD | NEW |
| 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 copy | 5 import copy |
| 6 import gyp | 6 import gyp |
| 7 import gyp.common | 7 import gyp.common |
| 8 import gyp.msvs_emulation | 8 import gyp.msvs_emulation |
| 9 import gyp.MSVSVersion | 9 import gyp.MSVSVersion |
| 10 import gyp.system_test | 10 import gyp.system_test |
| (...skipping 1180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1191 | 1191 |
| 1192 return rule_name | 1192 return rule_name |
| 1193 | 1193 |
| 1194 | 1194 |
| 1195 def CalculateVariables(default_variables, params): | 1195 def CalculateVariables(default_variables, params): |
| 1196 """Calculate additional variables for use in the build (called by gyp).""" | 1196 """Calculate additional variables for use in the build (called by gyp).""" |
| 1197 global generator_additional_non_configuration_keys | 1197 global generator_additional_non_configuration_keys |
| 1198 global generator_additional_path_sections | 1198 global generator_additional_path_sections |
| 1199 cc_target = os.environ.get('CC.target', os.environ.get('CC', 'cc')) | 1199 cc_target = os.environ.get('CC.target', os.environ.get('CC', 'cc')) |
| 1200 flavor = gyp.common.GetFlavor(params) | 1200 flavor = gyp.common.GetFlavor(params) |
| 1201 default_variables.setdefault('HOST_OS', gyp.common.GetHostFlavor(params)) |
| 1201 if flavor == 'mac': | 1202 if flavor == 'mac': |
| 1202 default_variables.setdefault('OS', 'mac') | 1203 default_variables.setdefault('OS', 'mac') |
| 1203 default_variables.setdefault('SHARED_LIB_SUFFIX', '.dylib') | 1204 default_variables.setdefault('SHARED_LIB_SUFFIX', '.dylib') |
| 1204 default_variables.setdefault('SHARED_LIB_DIR', | 1205 default_variables.setdefault('SHARED_LIB_DIR', |
| 1205 generator_default_variables['PRODUCT_DIR']) | 1206 generator_default_variables['PRODUCT_DIR']) |
| 1206 default_variables.setdefault('LIB_DIR', | 1207 default_variables.setdefault('LIB_DIR', |
| 1207 generator_default_variables['PRODUCT_DIR']) | 1208 generator_default_variables['PRODUCT_DIR']) |
| 1208 | 1209 |
| 1209 # Copy additional generator configuration data from Xcode, which is shared | 1210 # Copy additional generator configuration data from Xcode, which is shared |
| 1210 # by the Mac Ninja generator. | 1211 # by the Mac Ninja generator. |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1264 os.makedirs(os.path.dirname(path)) | 1265 os.makedirs(os.path.dirname(path)) |
| 1265 except OSError: | 1266 except OSError: |
| 1266 pass | 1267 pass |
| 1267 return open(path, mode) | 1268 return open(path, mode) |
| 1268 | 1269 |
| 1269 | 1270 |
| 1270 def GenerateOutputForConfig(target_list, target_dicts, data, params, | 1271 def GenerateOutputForConfig(target_list, target_dicts, data, params, |
| 1271 config_name): | 1272 config_name): |
| 1272 options = params['options'] | 1273 options = params['options'] |
| 1273 flavor = gyp.common.GetFlavor(params) | 1274 flavor = gyp.common.GetFlavor(params) |
| 1275 host_flavor = gyp.common.GetHostFlavor(params) |
| 1274 generator_flags = params.get('generator_flags', {}) | 1276 generator_flags = params.get('generator_flags', {}) |
| 1275 | 1277 |
| 1276 # build_dir: relative path from source root to our output files. | 1278 # build_dir: relative path from source root to our output files. |
| 1277 # e.g. "out/Debug" | 1279 # e.g. "out/Debug" |
| 1278 build_dir = os.path.join(generator_flags.get('output_dir', 'out'), | 1280 build_dir = os.path.join(generator_flags.get('output_dir', 'out'), |
| 1279 config_name) | 1281 config_name) |
| 1280 | 1282 |
| 1281 toplevel_build = os.path.join(options.toplevel_dir, build_dir) | 1283 toplevel_build = os.path.join(options.toplevel_dir, build_dir) |
| 1282 | 1284 |
| 1283 master_ninja = ninja_syntax.Writer( | 1285 master_ninja = ninja_syntax.Writer( |
| 1284 OpenOutput(os.path.join(toplevel_build, 'build.ninja')), | 1286 OpenOutput(os.path.join(toplevel_build, 'build.ninja')), |
| 1285 width=120) | 1287 width=120) |
| 1286 | 1288 |
| 1287 # Put build-time support tools in out/{config_name}. | 1289 # Put build-time support tools in out/{config_name}. |
| 1288 gyp.common.CopyTool(flavor, toplevel_build) | 1290 gyp.common.CopyTool(host_flavor, toplevel_build) |
| 1289 | 1291 |
| 1290 # Grab make settings for CC/CXX. | 1292 # Grab make settings for CC/CXX. |
| 1291 if flavor == 'win': | 1293 if flavor == 'win': |
| 1292 cc = cxx = 'cl.exe' | 1294 cc = cxx = 'cl.exe' |
| 1293 gyp.msvs_emulation.GenerateEnvironmentFiles( | 1295 gyp.msvs_emulation.GenerateEnvironmentFiles( |
| 1294 toplevel_build, generator_flags, OpenOutput) | 1296 toplevel_build, generator_flags, OpenOutput) |
| 1295 else: | 1297 else: |
| 1296 cc, cxx = 'gcc', 'g++' | 1298 cc, cxx = 'gcc', 'g++' |
| 1297 build_file, _, _ = gyp.common.ParseQualifiedTarget(target_list[0]) | 1299 build_file, _, _ = gyp.common.ParseQualifiedTarget(target_list[0]) |
| 1298 make_global_settings = data[build_file].get('make_global_settings', []) | 1300 make_global_settings = data[build_file].get('make_global_settings', []) |
| 1299 build_to_root = InvertRelativePath(build_dir) | 1301 build_to_root = InvertRelativePath(build_dir) |
| 1300 for key, value in make_global_settings: | 1302 for key, value in make_global_settings: |
| 1301 if key == 'CC': cc = os.path.join(build_to_root, value) | 1303 if key == 'CC': cc = os.path.join(build_to_root, value) |
| 1302 if key == 'CXX': cxx = os.path.join(build_to_root, value) | 1304 if key == 'CXX': cxx = os.path.join(build_to_root, value) |
| 1303 | 1305 |
| 1304 flock = 'flock' | 1306 flock = 'flock' |
| 1305 if flavor == 'mac': | 1307 if host_flavor == 'mac': |
| 1306 flock = './gyp-mac-tool flock' | 1308 flock = './gyp-mac-tool flock' |
| 1307 master_ninja.variable('cc', os.environ.get('CC', cc)) | 1309 master_ninja.variable('cc', os.environ.get('CC', cc)) |
| 1308 master_ninja.variable('cxx', os.environ.get('CXX', cxx)) | 1310 master_ninja.variable('cxx', os.environ.get('CXX', cxx)) |
| 1309 if flavor == 'win': | 1311 if flavor == 'win': |
| 1310 master_ninja.variable('ld', 'link.exe') | 1312 master_ninja.variable('ld', 'link.exe') |
| 1311 master_ninja.variable('idl', 'midl.exe') | 1313 master_ninja.variable('idl', 'midl.exe') |
| 1312 master_ninja.variable('ar', 'lib.exe') | 1314 master_ninja.variable('ar', 'lib.exe') |
| 1313 master_ninja.variable('rc', 'rc.exe') | 1315 master_ninja.variable('rc', 'rc.exe') |
| 1314 master_ninja.variable('asm', 'ml.exe') | 1316 master_ninja.variable('asm', 'ml.exe') |
| 1315 master_ninja.variable('mt', 'mt.exe') | 1317 master_ninja.variable('mt', 'mt.exe') |
| 1316 master_ninja.variable('use_dep_database', '1') | 1318 master_ninja.variable('use_dep_database', '1') |
| 1317 else: | 1319 else: |
| 1318 master_ninja.variable('ld', flock + ' linker.lock $cxx') | 1320 master_ninja.variable('ld', flock + ' linker.lock $cxx') |
| 1319 master_ninja.variable('ar', os.environ.get('AR', 'ar')) | 1321 master_ninja.variable('ar', os.environ.get('AR', 'ar')) |
| 1320 | 1322 |
| 1321 master_ninja.variable('ar_target', os.environ.get('AR_target', '$ar')) | 1323 master_ninja.variable('ar_target', os.environ.get('AR_target', '$ar')) |
| 1322 master_ninja.variable('cc_target', os.environ.get('CC_target', '$cc')) | 1324 master_ninja.variable('cc_target', os.environ.get('CC_target', '$cc')) |
| 1323 master_ninja.variable('cxx_target', os.environ.get('CXX_target', '$cxx')) | 1325 master_ninja.variable('cxx_target', os.environ.get('CXX_target', '$cxx')) |
| 1324 if flavor == 'win': | 1326 if flavor == 'win': |
| 1325 master_ninja.variable('ld_target', os.environ.get('LD_target', '$ld')) | 1327 master_ninja.variable('ld_target', os.environ.get('LD_target', '$ld')) |
| 1326 else: | 1328 else: |
| 1327 master_ninja.variable('ld_target', flock + ' linker.lock $cxx_target') | 1329 master_ninja.variable('ld_target', flock + ' linker.lock $cxx_target') |
| 1328 | 1330 |
| 1329 if flavor == 'mac': | 1331 if host_flavor == 'mac': |
| 1330 master_ninja.variable('mac_tool', os.path.join('.', 'gyp-mac-tool')) | 1332 master_ninja.variable('mac_tool', os.path.join('.', 'gyp-mac-tool')) |
| 1331 master_ninja.newline() | 1333 master_ninja.newline() |
| 1332 | 1334 |
| 1333 if flavor != 'win': | 1335 if flavor != 'win': |
| 1334 master_ninja.rule( | 1336 master_ninja.rule( |
| 1335 'cc', | 1337 'cc', |
| 1336 description='CC $out', | 1338 description='CC $out', |
| 1337 command=('$cc -MMD -MF $out.d $defines $includes $cflags $cflags_c ' | 1339 command=('$cc -MMD -MF $out.d $defines $includes $cflags $cflags_c ' |
| 1338 '$cflags_pch_c -c $in -o $out'), | 1340 '$cflags_pch_c -c $in -o $out'), |
| 1339 depfile='$out.d') | 1341 depfile='$out.d') |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1544 'link', | 1546 'link', |
| 1545 description='LINK $out, POSTBUILDS', | 1547 description='LINK $out, POSTBUILDS', |
| 1546 command=('$ld $ldflags -o $out ' | 1548 command=('$ld $ldflags -o $out ' |
| 1547 '$in $solibs $libs$postbuilds')) | 1549 '$in $solibs $libs$postbuilds')) |
| 1548 master_ninja.rule( | 1550 master_ninja.rule( |
| 1549 'infoplist', | 1551 'infoplist', |
| 1550 description='INFOPLIST $out', | 1552 description='INFOPLIST $out', |
| 1551 command=('$cc -E -P -Wno-trigraphs -x c $defines $in -o $out && ' | 1553 command=('$cc -E -P -Wno-trigraphs -x c $defines $in -o $out && ' |
| 1552 'plutil -convert xml1 $out $out')) | 1554 'plutil -convert xml1 $out $out')) |
| 1553 master_ninja.rule( | 1555 master_ninja.rule( |
| 1554 'mac_tool', | |
| 1555 description='MACTOOL $mactool_cmd $in', | |
| 1556 command='$env $mac_tool $mactool_cmd $in $out') | |
| 1557 master_ninja.rule( | |
| 1558 'package_framework', | 1556 'package_framework', |
| 1559 description='PACKAGE FRAMEWORK $out, POSTBUILDS', | 1557 description='PACKAGE FRAMEWORK $out, POSTBUILDS', |
| 1560 command='$mac_tool package-framework $out $version$postbuilds ' | 1558 command='$mac_tool package-framework $out $version$postbuilds ' |
| 1561 '&& touch $out') | 1559 '&& touch $out') |
| 1560 |
| 1561 if host_flavor == 'mac': |
| 1562 master_ninja.rule( |
| 1563 'mac_tool', |
| 1564 description='MACTOOL $mactool_cmd $in', |
| 1565 command='$env $mac_tool $mactool_cmd $in $out') |
| 1566 |
| 1562 if flavor == 'win': | 1567 if flavor == 'win': |
| 1563 master_ninja.rule( | 1568 master_ninja.rule( |
| 1564 'stamp', | 1569 'stamp', |
| 1565 description='STAMP $out', | 1570 description='STAMP $out', |
| 1566 command='%s gyp-win-tool stamp $out' % sys.executable) | 1571 command='%s gyp-win-tool stamp $out' % sys.executable) |
| 1567 master_ninja.rule( | 1572 master_ninja.rule( |
| 1568 'copy', | 1573 'copy', |
| 1569 description='COPY $in $out', | 1574 description='COPY $in $out', |
| 1570 command='%s gyp-win-tool recursive-mirror $in $out' % sys.executable) | 1575 command='%s gyp-win-tool recursive-mirror $in $out' % sys.executable) |
| 1571 else: | 1576 else: |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1649 | 1654 |
| 1650 user_config = params.get('generator_flags', {}).get('config', None) | 1655 user_config = params.get('generator_flags', {}).get('config', None) |
| 1651 if user_config: | 1656 if user_config: |
| 1652 GenerateOutputForConfig(target_list, target_dicts, data, params, | 1657 GenerateOutputForConfig(target_list, target_dicts, data, params, |
| 1653 user_config) | 1658 user_config) |
| 1654 else: | 1659 else: |
| 1655 config_names = target_dicts[target_list[0]]['configurations'].keys() | 1660 config_names = target_dicts[target_list[0]]['configurations'].keys() |
| 1656 for config_name in config_names: | 1661 for config_name in config_names: |
| 1657 GenerateOutputForConfig(target_list, target_dicts, data, params, | 1662 GenerateOutputForConfig(target_list, target_dicts, data, params, |
| 1658 config_name) | 1663 config_name) |
| OLD | NEW |