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'] |