You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.9 KiB
57 lines
1.9 KiB
# Copyright (c) 2020 Nordic Semiconductor ASA |
|
# |
|
# SPDX-License-Identifier: Apache-2.0 |
|
|
|
import argparse |
|
from pathlib import Path |
|
|
|
from west.commands import WestCommand |
|
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): |
|
# The 'share' subdirectory of the top level zephyr repository. |
|
share = Path(__file__).parents[2] / 'share' |
|
|
|
self.run_cmake_export(share / 'zephyr-package' / 'cmake') |
|
self.run_cmake_export(share / 'zephyrunittest-package' / 'cmake') |
|
|
|
def run_cmake_export(self, path): |
|
# Run a package installation script. |
|
# |
|
# Filtering out lines that start with -- ignores the normal |
|
# CMake status messages and instead only prints the important |
|
# information. |
|
|
|
lines = run_cmake(['-P', str(path / 'zephyr_export.cmake')], |
|
capture_output=True) |
|
msg = [line for line in lines if not line.startswith('-- ')] |
|
self.inf('\n'.join(msg))
|
|
|