| # -*- coding: utf-8 -*- |
| # Copyright 2018 The Chromium OS Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Common functions used from multiple files. |
| """ |
| |
| from __future__ import print_function |
| |
| import subprocess |
| |
| def parse_shell_args(s): |
| """Parses the string representing shell arguments (e.g. C++ flags) as a list. |
| |
| For example, '''-DFOO=a -DBAR='"b c"' -DBAZ="d e f"''' becomes |
| ['-DFOO=a', '-DBAR="b c"', '-DBAZ=d e f']. |
| For GN, strings to be passed to the shell must have been parsed, as otherwise |
| they are escaped by GN on emitting ninja files. |
| """ |
| # The dummy variable prevents the first value in s from interpreted as a flag |
| # for echo. IFS is set to separate $* with newlines. |
| output = subprocess.check_output( |
| ['eval "set -- dummy $0"; IFS=$\'\\n\'; echo -n "$*"', s], shell=True) |
| return output.splitlines()[1:] |