blob: 3b5bc7ded83b67f90893f299d4c9fc7adff8a5f5 [file] [log] [blame]
Dean Birch5cb5a882020-01-24 11:37:13 +00001#!/usr/bin/env python
2"""
3Script for querying specific build configurations of TF-M.
4Can list available build configurations, and can give environment
5variables to build a specific build configuration using run-build.sh
6"""
7
8import argparse
9import os
10import sys
11
12from tfm_ci_pylib.tfm_build_manager import TFM_Build_Manager
13from build_helper.build_helper_configs import config_full
14from build_helper.build_helper_configs import _builtin_configs
15
16
17__copyright__ = """
18/*
19 * Copyright (c) 2020, Arm Limited. All rights reserved.
20 *
21 * SPDX-License-Identifier: BSD-3-Clause
22 *
23 */
24 """
25
26
27def get_build_manager(group=None):
28 """Get a TFM_Build_Manager instance, silencing stdout"""
29 config = config_full
30 if group:
31 config = _builtin_configs[group]
32 _dir = os.getcwd()
33 # Block default stdout from __init__
34 sys.stdout = open(os.devnull, "w")
35 build_manager = TFM_Build_Manager(_dir, _dir, config)
36 # Allow stdout again
37 sys.stdout = sys.__stdout__
38 return build_manager
39
40
41def list_configs(group):
42 """Lists available configurations"""
43 build_manager = get_build_manager(group)
44 build_manager.print_config()
45
46
47def print_config_environment(config, group=None):
48 """Prints particular configuration environment variables"""
49 build_manager = get_build_manager(group)
50 build_manager.print_config_environment(config)
51
52
53if __name__ == "__main__":
54 PARSER = argparse.ArgumentParser(description="Extract build configurations.")
55 PARSER.add_argument(
56 "config",
57 default=None,
58 nargs="?",
59 help="Configuration to print environment variables for. "
60 "Then run-build.sh can be run directly with these set. "
61 "If not specified, the available configurations are printed",
62 )
63 PARSER.add_argument(
64 "-g",
65 "--group",
66 default=None,
67 help="Only list configurations under a certain group. ",
68 choices=list(_builtin_configs.keys()),
69 )
70 ARGS = PARSER.parse_args()
71
72 # By default print available configs
73 if not ARGS.config:
74 list_configs(ARGS.group)
75 else:
76 print_config_environment(ARGS.config, group=ARGS.group)