| # Copyright (c) 2020 Nordic Semiconductor ASA |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| import argparse |
| |
| from west.commands import WestCommand |
| |
| from pathlib import PurePath |
| from zcmake import run_cmake |
| |
| EXPORT_DESCRIPTION = '''\ |
| This command registers the current Zephyr installation as a CMake |
| config package in the CMake user package registry. |
| |
| In Windows, the CMake user package registry is found in: |
| HKEY_CURRENT_USER\\Software\\Kitware\\CMake\\Packages\\ |
| |
| In Linux and MacOS, the CMake user package registry is found in: |
| ~/.cmake/packages/''' |
| |
| |
| class ZephyrExport(WestCommand): |
| |
| def __init__(self): |
| super().__init__( |
| 'zephyr-export', |
| # Keep this in sync with the string in west-commands.yml. |
| 'export Zephyr installation as a CMake config package', |
| EXPORT_DESCRIPTION, |
| accepts_unknown_args=False) |
| |
| def do_add_parser(self, parser_adder): |
| parser = parser_adder.add_parser( |
| self.name, |
| help=self.help, |
| formatter_class=argparse.RawDescriptionHelpFormatter, |
| description=self.description) |
| return parser |
| |
| def do_run(self, args, unknown_args): |
| zephyr_config_package_path = PurePath(__file__).parents[2] \ |
| / 'share' / 'zephyr-package' / 'cmake' |
| |
| cmake_args = ['-S', f'{zephyr_config_package_path}', |
| '-B', f'{zephyr_config_package_path}'] |
| lines = run_cmake(cmake_args, capture_output=True) |
| |
| # Let's clean up, as Zephyr has now been exported, and we no longer |
| # need the generated files. |
| cmake_args = ['--build', f'{zephyr_config_package_path}', |
| '--target', 'pristine'] |
| run_cmake(cmake_args, capture_output=True) |
| |
| # Let's ignore the normal CMake printing and instead only print |
| # the important information. |
| msg = [line for line in lines if not line.startswith('-- ')] |
| print('\n'.join(msg)) |