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/make.py

Issue 1454433002: Python 3 compatibility Base URL: https://chromium.googlesource.com/external/gyp.git@master
Patch Set: Rebase with master (4ec6c4e3a94bd04a6da2858163d40b2429b8aad1) Created 4 years, 8 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
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 # Notes: 5 # Notes:
6 # 6 #
7 # This is all roughly based on the Makefile system used by the Linux 7 # This is all roughly based on the Makefile system used by the Linux
8 # kernel, but is a non-recursive make -- we put the entire dependency 8 # kernel, but is a non-recursive make -- we put the entire dependency
9 # graph in front of make and let it figure it out. 9 # graph in front of make and let it figure it out.
10 # 10 #
11 # The code below generates a separate .mk file for each target, but 11 # The code below generates a separate .mk file for each target, but
12 # all are sourced by the top-level Makefile. This means that all 12 # all are sourced by the top-level Makefile. This means that all
13 # variables in .mk-files clobber one another. Be careful to use := 13 # variables in .mk-files clobber one another. Be careful to use :=
14 # where appropriate for immediate evaluation, and similarly to watch 14 # where appropriate for immediate evaluation, and similarly to watch
15 # that you're not relying on a variable value to last beween different 15 # that you're not relying on a variable value to last beween different
16 # .mk files. 16 # .mk files.
17 # 17 #
18 # TODOs: 18 # TODOs:
19 # 19 #
20 # Global settings and utility functions are currently stuffed in the 20 # Global settings and utility functions are currently stuffed in the
21 # toplevel Makefile. It may make sense to generate some .mk files on 21 # toplevel Makefile. It may make sense to generate some .mk files on
22 # the side to keep the the files readable. 22 # the side to keep the the files readable.
23 23
24 from __future__ import print_function
25
24 import os 26 import os
25 import re 27 import re
26 import sys 28 import sys
27 import subprocess 29 import subprocess
28 import gyp 30 import gyp
29 import gyp.common 31 import gyp.common
30 import gyp.xcode_emulation 32 import gyp.xcode_emulation
31 from gyp.common import GetEnvironFallback 33 from gyp.common import GetEnvironFallback
32 from gyp.common import GypError 34 from gyp.common import GypError
33 35
(...skipping 604 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 for source in all_sources: 640 for source in all_sources:
639 name, ext = os.path.splitext(source) 641 name, ext = os.path.splitext(source)
640 is_compiled_file = ext in [ 642 is_compiled_file = ext in [
641 '.c', '.cc', '.cpp', '.cxx', '.m', '.mm', '.s', '.S'] 643 '.c', '.cc', '.cpp', '.cxx', '.m', '.mm', '.s', '.S']
642 if not is_compiled_file: 644 if not is_compiled_file:
643 continue 645 continue
644 basename = os.path.basename(name) # Don't include extension. 646 basename = os.path.basename(name) # Don't include extension.
645 basenames.setdefault(basename, []).append(source) 647 basenames.setdefault(basename, []).append(source)
646 648
647 error = '' 649 error = ''
648 for basename, files in basenames.iteritems(): 650 for basename, files in basenames.items():
649 if len(files) > 1: 651 if len(files) > 1:
650 error += ' %s: %s\n' % (basename, ' '.join(files)) 652 error += ' %s: %s\n' % (basename, ' '.join(files))
651 653
652 if error: 654 if error:
653 print('static library %s has several files with the same basename:\n' % 655 print('static library %s has several files with the same basename:\n' %
654 spec['target_name'] + error + 'libtool on OS X will generate' + 656 spec['target_name'] + error + 'libtool on OS X will generate' +
655 ' warnings for them.') 657 ' warnings for them.')
656 raise GypError('Duplicate basenames in sources section, see list above') 658 raise GypError('Duplicate basenames in sources section, see list above')
657 659
658 660
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
786 if self.flavor == 'mac': 788 if self.flavor == 'mac':
787 # libtool on OS X generates warnings for duplicate basenames in the same 789 # libtool on OS X generates warnings for duplicate basenames in the same
788 # target. 790 # target.
789 _ValidateSourcesForOSX(spec, all_sources) 791 _ValidateSourcesForOSX(spec, all_sources)
790 self.WriteSources( 792 self.WriteSources(
791 configs, deps, all_sources, extra_outputs, 793 configs, deps, all_sources, extra_outputs,
792 extra_link_deps, part_of_all, 794 extra_link_deps, part_of_all,
793 gyp.xcode_emulation.MacPrefixHeader( 795 gyp.xcode_emulation.MacPrefixHeader(
794 self.xcode_settings, lambda p: Sourceify(self.Absolutify(p)), 796 self.xcode_settings, lambda p: Sourceify(self.Absolutify(p)),
795 self.Pchify)) 797 self.Pchify))
796 sources = filter(Compilable, all_sources) 798 sources = [x for x in all_sources if Compilable(x)]
797 if sources: 799 if sources:
798 self.WriteLn(SHARED_HEADER_SUFFIX_RULES_COMMENT1) 800 self.WriteLn(SHARED_HEADER_SUFFIX_RULES_COMMENT1)
799 extensions = set([os.path.splitext(s)[1] for s in sources]) 801 extensions = set([os.path.splitext(s)[1] for s in sources])
800 for ext in extensions: 802 for ext in extensions:
801 if ext in self.suffix_rules_srcdir: 803 if ext in self.suffix_rules_srcdir:
802 self.WriteLn(self.suffix_rules_srcdir[ext]) 804 self.WriteLn(self.suffix_rules_srcdir[ext])
803 self.WriteLn(SHARED_HEADER_SUFFIX_RULES_COMMENT2) 805 self.WriteLn(SHARED_HEADER_SUFFIX_RULES_COMMENT2)
804 for ext in extensions: 806 for ext in extensions:
805 if ext in self.suffix_rules_objdir1: 807 if ext in self.suffix_rules_objdir1:
806 self.WriteLn(self.suffix_rules_objdir1[ext]) 808 self.WriteLn(self.suffix_rules_objdir1[ext])
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
915 # actions run on the host, so they should in theory only use host 917 # actions run on the host, so they should in theory only use host
916 # libraries, but until everything is made cross-compile safe, also use 918 # libraries, but until everything is made cross-compile safe, also use
917 # target libraries. 919 # target libraries.
918 # TODO(piman): when everything is cross-compile safe, remove lib.target 920 # TODO(piman): when everything is cross-compile safe, remove lib.target
919 self.WriteLn('cmd_%s = LD_LIBRARY_PATH=$(builddir)/lib.host:' 921 self.WriteLn('cmd_%s = LD_LIBRARY_PATH=$(builddir)/lib.host:'
920 '$(builddir)/lib.target:$$LD_LIBRARY_PATH; ' 922 '$(builddir)/lib.target:$$LD_LIBRARY_PATH; '
921 'export LD_LIBRARY_PATH; ' 923 'export LD_LIBRARY_PATH; '
922 '%s%s' 924 '%s%s'
923 % (name, cd_action, command)) 925 % (name, cd_action, command))
924 self.WriteLn() 926 self.WriteLn()
925 outputs = map(self.Absolutify, outputs) 927 outputs = [self.Absolutify(o) for o in outputs]
926 # The makefile rules are all relative to the top dir, but the gyp actions 928 # The makefile rules are all relative to the top dir, but the gyp actions
927 # are defined relative to their containing dir. This replaces the obj 929 # are defined relative to their containing dir. This replaces the obj
928 # variable for the action rule with an absolute version so that the output 930 # variable for the action rule with an absolute version so that the output
929 # goes in the right place. 931 # goes in the right place.
930 # Only write the 'obj' and 'builddir' rules for the "primary" output (:1); 932 # Only write the 'obj' and 'builddir' rules for the "primary" output (:1);
931 # it's superfluous for the "extra outputs", and this avoids accidentally 933 # it's superfluous for the "extra outputs", and this avoids accidentally
932 # writing duplicate dummy rules for those outputs. 934 # writing duplicate dummy rules for those outputs.
933 # Same for environment. 935 # Same for environment.
934 self.WriteLn("%s: obj := $(abs_obj)" % QuoteSpaces(outputs[0])) 936 self.WriteLn("%s: obj := $(abs_obj)" % QuoteSpaces(outputs[0]))
935 self.WriteLn("%s: builddir := $(abs_builddir)" % QuoteSpaces(outputs[0])) 937 self.WriteLn("%s: builddir := $(abs_builddir)" % QuoteSpaces(outputs[0]))
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 # which is fine in hash-based dependency systems like scons 1007 # which is fine in hash-based dependency systems like scons
1006 # and forge, but not kosher in the make world. After some 1008 # and forge, but not kosher in the make world. After some
1007 # discussion, hacking around it here seems like the least 1009 # discussion, hacking around it here seems like the least
1008 # amount of pain. 1010 # amount of pain.
1009 actions += ['@touch --no-create $@'] 1011 actions += ['@touch --no-create $@']
1010 1012
1011 # See the comment in WriteCopies about expanding env vars. 1013 # See the comment in WriteCopies about expanding env vars.
1012 outputs = [gyp.xcode_emulation.ExpandEnvVars(o, env) for o in outputs] 1014 outputs = [gyp.xcode_emulation.ExpandEnvVars(o, env) for o in outputs]
1013 inputs = [gyp.xcode_emulation.ExpandEnvVars(i, env) for i in inputs] 1015 inputs = [gyp.xcode_emulation.ExpandEnvVars(i, env) for i in inputs]
1014 1016
1015 outputs = map(self.Absolutify, outputs) 1017 outputs = [self.Absolutify(o) for o in outputs]
1016 all_outputs += outputs 1018 all_outputs += outputs
1017 # Only write the 'obj' and 'builddir' rules for the "primary" output 1019 # Only write the 'obj' and 'builddir' rules for the "primary" output
1018 # (:1); it's superfluous for the "extra outputs", and this avoids 1020 # (:1); it's superfluous for the "extra outputs", and this avoids
1019 # accidentally writing duplicate dummy rules for those outputs. 1021 # accidentally writing duplicate dummy rules for those outputs.
1020 self.WriteLn('%s: obj := $(abs_obj)' % outputs[0]) 1022 self.WriteLn('%s: obj := $(abs_obj)' % outputs[0])
1021 self.WriteLn('%s: builddir := $(abs_builddir)' % outputs[0]) 1023 self.WriteLn('%s: builddir := $(abs_builddir)' % outputs[0])
1022 self.WriteMakeRule(outputs, inputs, actions, 1024 self.WriteMakeRule(outputs, inputs, actions,
1023 command="%s_%d" % (name, count)) 1025 command="%s_%d" % (name, count))
1024 # Spaces in rule filenames are not supported, but rule variables have 1026 # Spaces in rule filenames are not supported, but rule variables have
1025 # spaces in them (e.g. RULE_INPUT_PATH expands to '$(abspath $<)'). 1027 # spaces in them (e.g. RULE_INPUT_PATH expands to '$(abspath $<)').
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
1203 self.WriteList(cflags_c, 'CFLAGS_C_%s' % configname) 1205 self.WriteList(cflags_c, 'CFLAGS_C_%s' % configname)
1204 self.WriteLn("# Flags passed to only C++ files."); 1206 self.WriteLn("# Flags passed to only C++ files.");
1205 self.WriteList(cflags_cc, 'CFLAGS_CC_%s' % configname) 1207 self.WriteList(cflags_cc, 'CFLAGS_CC_%s' % configname)
1206 if self.flavor == 'mac': 1208 if self.flavor == 'mac':
1207 self.WriteLn("# Flags passed to only ObjC files."); 1209 self.WriteLn("# Flags passed to only ObjC files.");
1208 self.WriteList(cflags_objc, 'CFLAGS_OBJC_%s' % configname) 1210 self.WriteList(cflags_objc, 'CFLAGS_OBJC_%s' % configname)
1209 self.WriteLn("# Flags passed to only ObjC++ files."); 1211 self.WriteLn("# Flags passed to only ObjC++ files.");
1210 self.WriteList(cflags_objcc, 'CFLAGS_OBJCC_%s' % configname) 1212 self.WriteList(cflags_objcc, 'CFLAGS_OBJCC_%s' % configname)
1211 includes = config.get('include_dirs') 1213 includes = config.get('include_dirs')
1212 if includes: 1214 if includes:
1213 includes = map(Sourceify, map(self.Absolutify, includes)) 1215 includes = [Sourceify(self.Absolutify(include)) for include in includes]
1214 self.WriteList(includes, 'INCS_%s' % configname, prefix='-I') 1216 self.WriteList(includes, 'INCS_%s' % configname, prefix='-I')
1215 1217
1216 compilable = filter(Compilable, sources) 1218 compilable = filter(Compilable, sources)
1217 objs = map(self.Objectify, map(self.Absolutify, map(Target, compilable))) 1219 objs = [self.Objectify(self.Absolutify(Target(x))) for x in compilable]
1218 self.WriteList(objs, 'OBJS') 1220 self.WriteList(objs, 'OBJS')
1219 1221
1220 for obj in objs: 1222 for obj in objs:
1221 assert ' ' not in obj, ( 1223 assert ' ' not in obj, (
1222 "Spaces in object filenames not supported (%s)" % obj) 1224 "Spaces in object filenames not supported (%s)" % obj)
1223 self.WriteLn('# Add to the list of files we specially track ' 1225 self.WriteLn('# Add to the list of files we specially track '
1224 'dependencies for.') 1226 'dependencies for.')
1225 self.WriteLn('all_deps += $(OBJS)') 1227 self.WriteLn('all_deps += $(OBJS)')
1226 self.WriteLn() 1228 self.WriteLn()
1227 1229
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1279 "$(INCS_$(BUILDTYPE)) " 1281 "$(INCS_$(BUILDTYPE)) "
1280 "%s " % precompiled_header.GetInclude('mm') + 1282 "%s " % precompiled_header.GetInclude('mm') +
1281 "$(CFLAGS_$(BUILDTYPE)) " 1283 "$(CFLAGS_$(BUILDTYPE)) "
1282 "$(CFLAGS_CC_$(BUILDTYPE)) " 1284 "$(CFLAGS_CC_$(BUILDTYPE)) "
1283 "$(CFLAGS_OBJCC_$(BUILDTYPE))") 1285 "$(CFLAGS_OBJCC_$(BUILDTYPE))")
1284 1286
1285 self.WritePchTargets(precompiled_header.GetPchBuildCommands()) 1287 self.WritePchTargets(precompiled_header.GetPchBuildCommands())
1286 1288
1287 # If there are any object files in our input file list, link them into our 1289 # If there are any object files in our input file list, link them into our
1288 # output. 1290 # output.
1289 extra_link_deps += filter(Linkable, sources) 1291 extra_link_deps += [source for source in sources if Linkable(source)]
1290 1292
1291 self.WriteLn() 1293 self.WriteLn()
1292 1294
1293 def WritePchTargets(self, pch_commands): 1295 def WritePchTargets(self, pch_commands):
1294 """Writes make rules to compile prefix headers.""" 1296 """Writes make rules to compile prefix headers."""
1295 if not pch_commands: 1297 if not pch_commands:
1296 return 1298 return
1297 1299
1298 for gch, lang_flag, lang, input in pch_commands: 1300 for gch, lang_flag, lang, input in pch_commands:
1299 extra_flags = { 1301 extra_flags = {
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1344 target_prefix = 'lib' 1346 target_prefix = 'lib'
1345 target_ext = '.a' 1347 target_ext = '.a'
1346 elif self.type in ('loadable_module', 'shared_library'): 1348 elif self.type in ('loadable_module', 'shared_library'):
1347 if target[:3] == 'lib': 1349 if target[:3] == 'lib':
1348 target = target[3:] 1350 target = target[3:]
1349 target_prefix = 'lib' 1351 target_prefix = 'lib'
1350 target_ext = '.so' 1352 target_ext = '.so'
1351 elif self.type == 'none': 1353 elif self.type == 'none':
1352 target = '%s.stamp' % target 1354 target = '%s.stamp' % target
1353 elif self.type != 'executable': 1355 elif self.type != 'executable':
1354 print ("ERROR: What output file should be generated?", 1356 print(("ERROR: What output file should be generated?",
1355 "type", self.type, "target", target) 1357 "type", self.type, "target", target))
1356 1358
1357 target_prefix = spec.get('product_prefix', target_prefix) 1359 target_prefix = spec.get('product_prefix', target_prefix)
1358 target = spec.get('product_name', target) 1360 target = spec.get('product_name', target)
1359 product_ext = spec.get('product_extension') 1361 product_ext = spec.get('product_extension')
1360 if product_ext: 1362 if product_ext:
1361 target_ext = '.' + product_ext 1363 target_ext = '.' + product_ext
1362 1364
1363 return target_prefix + target + target_ext 1365 return target_prefix + target + target_ext
1364 1366
1365 1367
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after
1509 1511
1510 for configname in target_postbuilds: 1512 for configname in target_postbuilds:
1511 self.WriteLn('%s: TARGET_POSTBUILDS_%s := %s' % 1513 self.WriteLn('%s: TARGET_POSTBUILDS_%s := %s' %
1512 (QuoteSpaces(self.output), 1514 (QuoteSpaces(self.output),
1513 configname, 1515 configname,
1514 gyp.common.EncodePOSIXShellList(target_postbuilds[configname]))) 1516 gyp.common.EncodePOSIXShellList(target_postbuilds[configname])))
1515 1517
1516 # Postbuilds expect to be run in the gyp file's directory, so insert an 1518 # Postbuilds expect to be run in the gyp file's directory, so insert an
1517 # implicit postbuild to cd to there. 1519 # implicit postbuild to cd to there.
1518 postbuilds.insert(0, gyp.common.EncodePOSIXShellList(['cd', self.path])) 1520 postbuilds.insert(0, gyp.common.EncodePOSIXShellList(['cd', self.path]))
1519 for i in xrange(len(postbuilds)): 1521 for i, postbuild in enumerate(postbuilds):
1520 if not postbuilds[i].startswith('$'): 1522 if not postbuild.startswith('$'):
1521 postbuilds[i] = EscapeShellArgument(postbuilds[i]) 1523 postbuilds[i] = EscapeShellArgument(postbuild)
1522 self.WriteLn('%s: builddir := $(abs_builddir)' % QuoteSpaces(self.output)) 1524 self.WriteLn('%s: builddir := $(abs_builddir)' % QuoteSpaces(self.output))
1523 self.WriteLn('%s: POSTBUILDS := %s' % ( 1525 self.WriteLn('%s: POSTBUILDS := %s' % (
1524 QuoteSpaces(self.output), ' '.join(postbuilds))) 1526 QuoteSpaces(self.output), ' '.join(postbuilds)))
1525 1527
1526 # A bundle directory depends on its dependencies such as bundle resources 1528 # A bundle directory depends on its dependencies such as bundle resources
1527 # and bundle binary. When all dependencies have been built, the bundle 1529 # and bundle binary. When all dependencies have been built, the bundle
1528 # needs to be packaged. 1530 # needs to be packaged.
1529 if self.is_mac_bundle: 1531 if self.is_mac_bundle:
1530 # If the framework doesn't contain a binary, then nothing depends 1532 # If the framework doesn't contain a binary, then nothing depends
1531 # on the actions -- make the framework depend on them directly too. 1533 # on the actions -- make the framework depend on them directly too.
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
1601 part_of_all, postbuilds=postbuilds) 1603 part_of_all, postbuilds=postbuilds)
1602 else: 1604 else:
1603 self.WriteDoCmd( 1605 self.WriteDoCmd(
1604 [self.output_binary], link_deps, 'solink_module', part_of_all, 1606 [self.output_binary], link_deps, 'solink_module', part_of_all,
1605 postbuilds=postbuilds) 1607 postbuilds=postbuilds)
1606 elif self.type == 'none': 1608 elif self.type == 'none':
1607 # Write a stamp line. 1609 # Write a stamp line.
1608 self.WriteDoCmd([self.output_binary], deps, 'touch', part_of_all, 1610 self.WriteDoCmd([self.output_binary], deps, 'touch', part_of_all,
1609 postbuilds=postbuilds) 1611 postbuilds=postbuilds)
1610 else: 1612 else:
1611 print "WARNING: no output for", self.type, target 1613 print("WARNING: no output for", self.type, target)
1612 1614
1613 # Add an alias for each target (if there are any outputs). 1615 # Add an alias for each target (if there are any outputs).
1614 # Installable target aliases are created below. 1616 # Installable target aliases are created below.
1615 if ((self.output and self.output != self.target) and 1617 if ((self.output and self.output != self.target) and
1616 (self.type not in self._INSTALLABLE_TARGETS)): 1618 (self.type not in self._INSTALLABLE_TARGETS)):
1617 self.WriteMakeRule([self.target], [self.output], 1619 self.WriteMakeRule([self.target], [self.output],
1618 comment='Add target alias', phony = True) 1620 comment='Add target alias', phony = True)
1619 if part_of_all: 1621 if part_of_all:
1620 self.WriteMakeRule(['all'], [self.target], 1622 self.WriteMakeRule(['all'], [self.target],
1621 comment = 'Add target alias to "all" target.', 1623 comment = 'Add target alias to "all" target.',
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
1708 inputs: a list of inputs for the rule 1710 inputs: a list of inputs for the rule
1709 actions: a list of shell commands to run for the rule 1711 actions: a list of shell commands to run for the rule
1710 comment: a comment to put in the Makefile above the rule (also useful 1712 comment: a comment to put in the Makefile above the rule (also useful
1711 for making this Python script's code self-documenting) 1713 for making this Python script's code self-documenting)
1712 order_only: if true, makes the dependency order-only 1714 order_only: if true, makes the dependency order-only
1713 force: if true, include FORCE_DO_CMD as an order-only dep 1715 force: if true, include FORCE_DO_CMD as an order-only dep
1714 phony: if true, the rule does not actually generate the named output, the 1716 phony: if true, the rule does not actually generate the named output, the
1715 output is just a name to run the rule 1717 output is just a name to run the rule
1716 command: (optional) command name to generate unambiguous labels 1718 command: (optional) command name to generate unambiguous labels
1717 """ 1719 """
1718 outputs = map(QuoteSpaces, outputs) 1720 outputs = [QuoteSpaces(o) for o in outputs]
1719 inputs = map(QuoteSpaces, inputs) 1721 inputs = map(QuoteSpaces, inputs)
1720 1722
1721 if comment: 1723 if comment:
1722 self.WriteLn('# ' + comment) 1724 self.WriteLn('# ' + comment)
1723 if phony: 1725 if phony:
1724 self.WriteLn('.PHONY: ' + ' '.join(outputs)) 1726 self.WriteLn('.PHONY: ' + ' '.join(outputs))
1725 if actions: 1727 if actions:
1726 self.WriteLn("%s: TOOLSET := $(TOOLSET)" % outputs[0]) 1728 self.WriteLn("%s: TOOLSET := $(TOOLSET)" % outputs[0])
1727 force_append = ' FORCE_DO_CMD' if force else '' 1729 force_append = ' FORCE_DO_CMD' if force else ''
1728 1730
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
1950 build_files_args)}) 1952 build_files_args)})
1951 1953
1952 1954
1953 def PerformBuild(data, configurations, params): 1955 def PerformBuild(data, configurations, params):
1954 options = params['options'] 1956 options = params['options']
1955 for config in configurations: 1957 for config in configurations:
1956 arguments = ['make'] 1958 arguments = ['make']
1957 if options.toplevel_dir and options.toplevel_dir != '.': 1959 if options.toplevel_dir and options.toplevel_dir != '.':
1958 arguments += '-C', options.toplevel_dir 1960 arguments += '-C', options.toplevel_dir
1959 arguments.append('BUILDTYPE=' + config) 1961 arguments.append('BUILDTYPE=' + config)
1960 print 'Building [%s]: %s' % (config, arguments) 1962 print('Building [%s]: %s' % (config, arguments))
1961 subprocess.check_call(arguments) 1963 subprocess.check_call(arguments)
1962 1964
1963 1965
1964 def GenerateOutput(target_list, target_dicts, data, params): 1966 def GenerateOutput(target_list, target_dicts, data, params):
1965 options = params['options'] 1967 options = params['options']
1966 flavor = gyp.common.GetFlavor(params) 1968 flavor = gyp.common.GetFlavor(params)
1967 generator_flags = params.get('generator_flags', {}) 1969 generator_flags = params.get('generator_flags', {})
1968 builddir_name = generator_flags.get('output_dir', 'out') 1970 builddir_name = generator_flags.get('output_dir', 'out')
1969 android_ndk_version = generator_flags.get('android_ndk_version', None) 1971 android_ndk_version = generator_flags.get('android_ndk_version', None)
1970 default_target = generator_flags.get('default_target', 'all') 1972 default_target = generator_flags.get('default_target', 'all')
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
2209 root_makefile.write("endif\n") 2211 root_makefile.write("endif\n")
2210 root_makefile.write('\n') 2212 root_makefile.write('\n')
2211 2213
2212 if (not generator_flags.get('standalone') 2214 if (not generator_flags.get('standalone')
2213 and generator_flags.get('auto_regeneration', True)): 2215 and generator_flags.get('auto_regeneration', True)):
2214 WriteAutoRegenerationRule(params, root_makefile, makefile_name, build_files) 2216 WriteAutoRegenerationRule(params, root_makefile, makefile_name, build_files)
2215 2217
2216 root_makefile.write(SHARED_FOOTER) 2218 root_makefile.write(SHARED_FOOTER)
2217 2219
2218 root_makefile.close() 2220 root_makefile.close()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698