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

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

Issue 23464038: ninja: Don't write subninjas for ninja files that end up being empty. (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
« 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 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
11 import subprocess 11 import subprocess
12 import sys 12 import sys
13 import gyp 13 import gyp
14 import gyp.common 14 import gyp.common
15 import gyp.msvs_emulation 15 import gyp.msvs_emulation
16 import gyp.MSVSUtil as MSVSUtil 16 import gyp.MSVSUtil as MSVSUtil
17 import gyp.xcode_emulation 17 import gyp.xcode_emulation
18 from cStringIO import StringIO
18 19
19 from gyp.common import GetEnvironFallback 20 from gyp.common import GetEnvironFallback
20 import gyp.ninja_syntax as ninja_syntax 21 import gyp.ninja_syntax as ninja_syntax
21 22
22 generator_default_variables = { 23 generator_default_variables = {
23 'EXECUTABLE_PREFIX': '', 24 'EXECUTABLE_PREFIX': '',
24 'EXECUTABLE_SUFFIX': '', 25 'EXECUTABLE_SUFFIX': '',
25 'STATIC_LIB_PREFIX': 'lib', 26 'STATIC_LIB_PREFIX': 'lib',
26 'STATIC_LIB_SUFFIX': '.a', 27 'STATIC_LIB_SUFFIX': '.a',
27 'SHARED_LIB_PREFIX': 'lib', 28 'SHARED_LIB_PREFIX': 'lib',
(...skipping 1984 matching lines...) Expand 10 before | Expand all | Expand 10 after
2012 gyp.xcode_emulation.MergeGlobalXcodeSettingsToSpec(data[build_file], spec) 2013 gyp.xcode_emulation.MergeGlobalXcodeSettingsToSpec(data[build_file], spec)
2013 2014
2014 build_file = gyp.common.RelativePath(build_file, options.toplevel_dir) 2015 build_file = gyp.common.RelativePath(build_file, options.toplevel_dir)
2015 2016
2016 base_path = os.path.dirname(build_file) 2017 base_path = os.path.dirname(build_file)
2017 obj = 'obj' 2018 obj = 'obj'
2018 if toolset != 'target': 2019 if toolset != 'target':
2019 obj += '.' + toolset 2020 obj += '.' + toolset
2020 output_file = os.path.join(obj, base_path, name + '.ninja') 2021 output_file = os.path.join(obj, base_path, name + '.ninja')
2021 2022
2023 ninja_output = StringIO()
2022 writer = NinjaWriter(qualified_target, target_outputs, base_path, build_dir, 2024 writer = NinjaWriter(qualified_target, target_outputs, base_path, build_dir,
2023 OpenOutput(os.path.join(toplevel_build, output_file)), 2025 ninja_output,
2024 toplevel_build, output_file, 2026 toplevel_build, output_file,
2025 flavor, toplevel_dir=options.toplevel_dir) 2027 flavor, toplevel_dir=options.toplevel_dir)
2026 master_ninja.subninja(output_file) 2028 target = writer.WriteSpec(spec, config_name, generator_flags)
2027 2029
2028 target = writer.WriteSpec(spec, config_name, generator_flags) 2030 if ninja_output.tell() > 0:
2031 # Only create files for ninja files that actually have contents.
2032 with OpenOutput(os.path.join(toplevel_build, output_file)) as ninja_file:
2033 ninja_file.write(ninja_output.getvalue())
2034 ninja_output.close()
2035 master_ninja.subninja(output_file)
2036
2029 if target: 2037 if target:
2030 if name != target.FinalOutput() and spec['toolset'] == 'target': 2038 if name != target.FinalOutput() and spec['toolset'] == 'target':
2031 target_short_names.setdefault(name, []).append(target) 2039 target_short_names.setdefault(name, []).append(target)
2032 target_outputs[qualified_target] = target 2040 target_outputs[qualified_target] = target
2033 if qualified_target in all_targets: 2041 if qualified_target in all_targets:
2034 all_outputs.add(target.FinalOutput()) 2042 all_outputs.add(target.FinalOutput())
2035 2043
2036 if target_short_names: 2044 if target_short_names:
2037 # Write a short name to build this target. This benefits both the 2045 # Write a short name to build this target. This benefits both the
2038 # "build chrome" case as well as the gyp tests, which expect to be 2046 # "build chrome" case as well as the gyp tests, which expect to be
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
2087 arglists.append( 2095 arglists.append(
2088 (target_list, target_dicts, data, params, config_name)) 2096 (target_list, target_dicts, data, params, config_name))
2089 pool.map(CallGenerateOutputForConfig, arglists) 2097 pool.map(CallGenerateOutputForConfig, arglists)
2090 except KeyboardInterrupt, e: 2098 except KeyboardInterrupt, e:
2091 pool.terminate() 2099 pool.terminate()
2092 raise e 2100 raise e
2093 else: 2101 else:
2094 for config_name in config_names: 2102 for config_name in config_names:
2095 GenerateOutputForConfig(target_list, target_dicts, data, params, 2103 GenerateOutputForConfig(target_list, target_dicts, data, params,
2096 config_name) 2104 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