blob: 3b5bc7ded83b67f90893f299d4c9fc7adff8a5f5 [file] [log] [blame]
#!/usr/bin/env python
"""
Script for querying specific build configurations of TF-M.
Can list available build configurations, and can give environment
variables to build a specific build configuration using run-build.sh
"""
import argparse
import os
import sys
from tfm_ci_pylib.tfm_build_manager import TFM_Build_Manager
from build_helper.build_helper_configs import config_full
from build_helper.build_helper_configs import _builtin_configs
__copyright__ = """
/*
* Copyright (c) 2020, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
"""
def get_build_manager(group=None):
"""Get a TFM_Build_Manager instance, silencing stdout"""
config = config_full
if group:
config = _builtin_configs[group]
_dir = os.getcwd()
# Block default stdout from __init__
sys.stdout = open(os.devnull, "w")
build_manager = TFM_Build_Manager(_dir, _dir, config)
# Allow stdout again
sys.stdout = sys.__stdout__
return build_manager
def list_configs(group):
"""Lists available configurations"""
build_manager = get_build_manager(group)
build_manager.print_config()
def print_config_environment(config, group=None):
"""Prints particular configuration environment variables"""
build_manager = get_build_manager(group)
build_manager.print_config_environment(config)
if __name__ == "__main__":
PARSER = argparse.ArgumentParser(description="Extract build configurations.")
PARSER.add_argument(
"config",
default=None,
nargs="?",
help="Configuration to print environment variables for. "
"Then run-build.sh can be run directly with these set. "
"If not specified, the available configurations are printed",
)
PARSER.add_argument(
"-g",
"--group",
default=None,
help="Only list configurations under a certain group. ",
choices=list(_builtin_configs.keys()),
)
ARGS = PARSER.parse_args()
# By default print available configs
if not ARGS.config:
list_configs(ARGS.group)
else:
print_config_environment(ARGS.config, group=ARGS.group)