Chromium Code Reviews| Index: pylib/gyp/generator/ninja.py |
| =================================================================== |
| --- pylib/gyp/generator/ninja.py (revision 1758) |
| +++ pylib/gyp/generator/ninja.py (working copy) |
| @@ -58,6 +58,7 @@ |
| generator_additional_non_configuration_keys = [] |
| generator_additional_path_sections = [] |
| generator_extra_sources_for_rules = [] |
| +generator_file_path = None |
| # TODO: figure out how to not build extra host objects in the non-cross-compile |
| # case when this is enabled, and enable unconditionally. |
| @@ -1458,7 +1459,34 @@ |
| default_variables.setdefault('LIB_DIR', |
| os.path.join('$!PRODUCT_DIR', 'obj')) |
| +def ComputeOutputDir(params): |
| + """Returns the path from the toplevel_dir to the build output directory.""" |
| + # generator_dir: relative path from pwd to where make puts build files. |
| + # Makes migrating from make to ninja easier, ninja doesn't put anything here. |
| + generator_dir = os.path.relpath(params['options'].generator_output or '.') |
| + # output_dir: relative path from generator_dir to the build directory. |
| + output_dir = params.get('generator_flags', {}).get('output_dir', 'out') |
| + |
| + # relative path from source root to our output files. e.g. "out" |
|
scottmg
2013/10/16 23:29:48
nit; Relative
Nico
2013/10/17 00:00:26
Done.
|
| + return os.path.normpath(os.path.join(generator_dir, output_dir)) |
| + |
| + |
| +def CalculateGeneratorInputInfo(params): |
| + # E.g. "out/gypfiles" |
|
scottmg
2013/10/16 23:29:48
docstring
Nico
2013/10/17 00:00:26
Done.
|
| + qualified_out_dir = os.path.normpath(os.path.join( |
| + params['options'].toplevel_dir, ComputeOutputDir(params), 'gypfiles')) |
| + |
| + def gypfile_path(build_file_dir, name): |
| + name = os.path.join(qualified_out_dir, build_file_dir, name) |
| + if not os.path.isdir(os.path.dirname(name)): |
| + os.makedirs(os.path.dirname(name)) |
| + return name |
| + |
| + global generator_file_path |
| + generator_file_path = gypfile_path |
| + |
| + |
| def OpenOutput(path, mode='w'): |
| """Open |path| for writing, creating directories if necessary.""" |
| try: |
| @@ -1608,18 +1636,10 @@ |
| flavor = gyp.common.GetFlavor(params) |
| generator_flags = params.get('generator_flags', {}) |
| - # generator_dir: relative path from pwd to where make puts build files. |
| - # Makes migrating from make to ninja easier, ninja doesn't put anything here. |
| - generator_dir = os.path.relpath(params['options'].generator_output or '.') |
| - |
| - # output_dir: relative path from generator_dir to the build directory. |
| - output_dir = generator_flags.get('output_dir', 'out') |
| - |
| # build_dir: relative path from source root to our output files. |
| # e.g. "out/Debug" |
| - build_dir = os.path.normpath(os.path.join(generator_dir, |
| - output_dir, |
| - config_name)) |
| + build_dir = os.path.normpath( |
| + os.path.join(ComputeOutputDir(params), config_name)) |
| toplevel_build = os.path.join(options.toplevel_dir, build_dir) |