8c1248932e
We recently changed embedded builtins to be emitted as raw assembly files during the build process in order to support MSVC (which doesn't support inline assembly on x64). Ninja uses ml.exe / ml64.exe as the assembler on all Windows builds (msvc & clang); these unfortunately don't support large data streams well and can take over 5 minutes for embedded.S. With this CL we work around this by going back to inlined assembly for clang Windows builds. Bug: v8:6666, v8:8475 Change-Id: I33beb3f5a1df07de3299df0fc2be4e8983701db0 Reviewed-on: https://chromium-review.googlesource.com/c/1344114 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Sergiy Belozorov <sergiyb@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Reviewed-by: Michael Achenbach <machenbach@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/master@{#57726}
30 lines
988 B
Python
30 lines
988 B
Python
#!/usr/bin/env python
|
|
|
|
# Copyright 2018 the V8 project authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
'''
|
|
Converts a given file in clang assembly syntax to a corresponding
|
|
representation in inline assembly. Specifically, this is used to convert
|
|
embedded.S to embedded.cc for Windows clang builds.
|
|
'''
|
|
|
|
import argparse
|
|
import sys
|
|
|
|
def asm_to_inl_asm(in_filename, out_filename):
|
|
with open(in_filename, 'r') as infile, open(out_filename, 'wb') as outfile:
|
|
outfile.write('__asm__(\n')
|
|
for line in infile:
|
|
outfile.write(' "%s\\n"\n' % line.rstrip())
|
|
outfile.write(');\n')
|
|
return 0
|
|
|
|
if __name__ == '__main__':
|
|
parser = argparse.ArgumentParser(description=__doc__)
|
|
parser.add_argument('input', help='Name of the input assembly file')
|
|
parser.add_argument('output', help='Name of the target CC file')
|
|
args = parser.parse_args()
|
|
sys.exit(asm_to_inl_asm(args.input, args.output))
|