mirror of
https://github.com/dart-lang/sdk
synced 2024-09-05 16:41:07 +00:00
7a43c648c3
Calling out to python from GN to process gypi files is relatively
expensive with a 20-45ms fixed overhead for setup/teardown regardless
of what the script does. This makes runtime/vm/BUILD.gn take 1-1.5s
(per toolchain) to run as the template for libraries expands
out to 25 calls to gypi_to_gn.py, even though the actual time spent
processing the gypi files is negligible.
This replaces those repeated calls to gypi_to_gn.py with a call to a
custom script that process all of the gypi files needed for runtime/vm
and places the results into a single scope which can then be read from
in the template and replaces a few other scattered calls to
gypi_to_gn.py with a smaller number of calls that process multiple
gypi files and place the results into a single scope.
The end result is processing all of dart's GN files in a fuchsia build
takes ~250ms instead of >3 seconds.
R=zra@google.com
Review URL: https://codereview.chromium.org/2472813002 .
Committed: ad86d6ed26
44 lines
1.7 KiB
Plaintext
44 lines
1.7 KiB
Plaintext
# Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
|
|
# for details. All rights reserved. Use of this source code is governed by a
|
|
# BSD-style license that can be found in the LICENSE file.
|
|
|
|
_gypi_files = [
|
|
"builtin_sources.gypi",
|
|
"builtin_impl_sources.gypi",
|
|
"vmservice/vmservice_sources.gypi",
|
|
"io_sources.gypi",
|
|
"io_impl_sources.gypi",
|
|
]
|
|
|
|
_gypi_contents = exec_script("../../tools/gypi_to_gn.py",
|
|
rebase_path(_gypi_files) + [ "--prefix" ],
|
|
"scope",
|
|
_gypi_files)
|
|
|
|
resources_sources_gypi = _gypi_contents.vmservice_sources_sources
|
|
|
|
builtin_sources_gypi = _gypi_contents.builtin_sources_sources
|
|
builtin_impl_sources_gypi = _gypi_contents.builtin_impl_sources_sources
|
|
|
|
io_sources_gypi = _gypi_contents.io_sources_sources
|
|
io_impl_sources_gypi = _gypi_contents.io_impl_sources_sources
|
|
|
|
_test_gypi_files = [
|
|
"../vm/vm_sources.gypi",
|
|
"builtin_impl_sources.gypi",
|
|
]
|
|
|
|
_test_only_gypi_contents = exec_script("../../tools/gypi_to_gn.py",
|
|
rebase_path(_test_gypi_files) + [
|
|
"--keep_only=_test.cc",
|
|
"--keep_only=_test.h",
|
|
"--prefix",
|
|
],
|
|
"scope",
|
|
_test_gypi_files)
|
|
|
|
# The VM sources are already included in libdart, so we just want to add in
|
|
# the tests here.
|
|
vm_tests_list = _test_only_gypi_contents.vm_sources_sources
|
|
builtin_impl_tests_list = _test_only_gypi_contents.builtin_impl_sources_sources
|