| Index: pylib/gyp/input.py | 
| =================================================================== | 
| --- pylib/gyp/input.py	(revision 1758) | 
| +++ pylib/gyp/input.py	(working copy) | 
| @@ -781,7 +781,7 @@ | 
| # Find the build file's directory, so commands can be run or file lists | 
| # generated relative to it. | 
| build_file_dir = os.path.dirname(build_file) | 
| -      if build_file_dir == '': | 
| +      if build_file_dir == '' and not file_list: | 
| # If build_file is just a leaf filename indicating a file in the | 
| # current directory, build_file_dir might be an empty string.  Set | 
| # it to None to signal to subprocess.Popen that it should run the | 
| @@ -798,9 +798,11 @@ | 
| else: | 
| contents_list = contents.split(' ') | 
| replacement = contents_list[0] | 
| -      path = replacement | 
| -      if build_file_dir and not os.path.isabs(path): | 
| -        path = os.path.join(build_file_dir, path) | 
| +      if os.path.isabs(replacement): | 
| +        raise GypError('| cannot handle absolute paths, got "%s"' % path) | 
| + | 
| +      path = generator_filelist_path(build_file_dir, replacement) | 
| +      replacement = gyp.common.RelativePath(path, build_file_dir) | 
| f = gyp.common.WriteOnDiff(path) | 
| for i in contents_list[1:]: | 
| f.write('%s\n' % i) | 
| @@ -2599,6 +2601,11 @@ | 
| multiple_toolsets = generator_input_info[ | 
| 'generator_supports_multiple_toolsets'] | 
|  | 
| +  global generator_filelist_path | 
| +  generator_filelist_path = generator_input_info['generator_filelist_path'] | 
| +  if not generator_filelist_path: | 
| +    generator_filelist_path = lambda a, b: os.path.join(a, b) | 
| + | 
| # A generator can have other lists (in addition to sources) be processed | 
| # for rules. | 
| extra_sources_for_rules = generator_input_info['extra_sources_for_rules'] | 
|  |