diff options
Diffstat (limited to 'BuildTools/scons2ninja.py')
| -rwxr-xr-x | BuildTools/scons2ninja.py | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/BuildTools/scons2ninja.py b/BuildTools/scons2ninja.py index 6c77c88..df4c655 100755 --- a/BuildTools/scons2ninja.py +++ b/BuildTools/scons2ninja.py @@ -1,8 +1,8 @@ #!/usr/bin/env python -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- ################################################################################ # # scons2ninja: A script to create a Ninja build file from SCons. # # Copyright (c) 2013 Remko Tronçon @@ -201,15 +201,15 @@ class NinjaBuilder : result += self._build + "\n" return result def to_string(self, lst, quote = False) : if is_list(lst) : if quote : - return ' '.join([quote_spaces(x) for x in lst]) + return ' '.join([quote_spaces(x) for x in lst]) else : - return ' '.join([escape(x) for x in lst]) + return ' '.join([escape(x) for x in lst]) if is_regexp(lst) : return ' '.join([escape(x) for x in self.targets if lst.match(x)]) return escape(lst) def get_flags_variable(self, flags_type, flags) : if len(flags) == 0 : @@ -245,14 +245,14 @@ scons_dependencies = [os.path.normpath(x) for x in scons_dependencies] ninja = NinjaBuilder() ninja.pool('scons_pool', depth = 1) if sys.platform == 'win32' : - ninja.rule('cl', - deps = 'msvc', + ninja.rule('cl', + deps = 'msvc', command = '$cl /showIncludes $clflags -c $in /Fo$out', description = 'CXX $out') ninja.rule('link', command = '$link $in $linkflags $libs /out:$out', description = 'LINK $out') @@ -366,13 +366,13 @@ skip_nth_line = -1 stack = ['.'] for line in f.stdout : line = line.rstrip() # Skip lines if requested from previous command if skip_nth_line >= 0 : - skip_nth_line -= 1 + skip_nth_line -= 1 if skip_nth_line == 0 : continue if line.startswith('scons: done building targets') : break @@ -404,13 +404,13 @@ for line in f.stdout : # Work around bug in SCons that splits output over multiple lines continue level = line.index('+-') / 2 filename = line[level*2+2:] if filename.startswith('[') : - filename = filename[1:-1] + filename = filename[1:-1] # Check if we use the 'fixed' format which escapes filenamenames if filename.startswith('\'') and filename.endswith('\'') : filename = eval(filename) if level < len(stack) : @@ -426,13 +426,13 @@ for line in f.stdout : if target not in dependencies : dependencies[target] = [] dependencies[target].append(filename) previous_filename = filename if f.wait() != 0 : - print "Error calling '" + scons_generate_cmd + "'" + print("Error calling '" + scons_generate_cmd + "'") print f.stderr.read() exit(-1) # Pass 2: Parse build rules tools = {} for line in build_lines : @@ -525,16 +525,16 @@ for line in build_lines : objects, flags = partition(flags, lambda x: x.endswith('.obj') or x.endswith('.res')) out, flags = extract_unary_flag("/out:", flags) libs, flags = partition(flags, lambda x: not x.startswith("/") and x.endswith(".lib")) libpaths = get_unary_flags("/libpath:", flags) deps = get_built_libs(libs, libpaths, ninja.targets) if out in mtflags : - ninja.build(out, 'link_mt', objects, deps = sorted(deps), + ninja.build(out, 'link_mt', objects, deps = sorted(deps), libs = libs, linkflags = flags, mtflags = mtflags[out]) else : - ninja.build(out, 'link', objects, deps = sorted(deps), + ninja.build(out, 'link', objects, deps = sorted(deps), libs = libs, linkflags = flags) elif tool == 'rc': out, flags = extract_unary_flag("/fo", flags) files, flags = extract_non_flags(flags) ninja.build(out, 'rc', files[0], order_deps = '_generated_headers', rcflags = flags) @@ -586,16 +586,18 @@ for line in build_lines : ninja.build(out, 'dsymutil', files, dsymutilflags = flags) elif tool == 'sdef' : source = flags[0]; outdir, flags = extract_binary_flag("-o", flags) basename, flags = extract_binary_flag("--basename", flags) - ninja.build(os.path.join(outdir, basename + ".h"), 'sdef', [source], + ninja.build(os.path.join(outdir, basename + ".h"), 'sdef', [source], basename = basename, outdir = outdir) + elif tool == 'checker': + pass elif not ninja_custom_command(ninja, line) : raise Exception("Unknown tool: '" + line + "'") # Phony target for all generated headers, used as an order-only depency from all C/C++ sources |
Swift