| # Copyright 2020 Texas Instruments Incorporated |
| |
| """A wrapper to run the SDK makefiles for Platform driver generation |
| Args: |
| 1. [TI Simplelink SDK Root] |
| 2. [Matter repository Root] |
| 3. [Path to built drivers in repo] |
| """ |
| |
| import argparse |
| import os |
| import shutil |
| import subprocess |
| import sys |
| |
| parser = argparse.ArgumentParser() |
| parser.add_argument('--sdk', help="TI SDK root") |
| parser.add_argument('--chip-root', help="CHIP Root") |
| parser.add_argument('--src-path-drivers', help="the path where the built drivers exist") |
| parser.add_argument('--src-path-driverlib', help="the path where the built driverlib exist") |
| parser.add_argument('--dest-path', help="path where drivers will be copied to") |
| |
| args = parser.parse_args() |
| |
| ret = False |
| |
| if os.getenv('_PW_ACTUAL_ENVIRONMENT_ROOT'): |
| CHIP_ENV_ROOT = os.getenv('_PW_ACTUAL_ENVIRONMENT_ROOT') |
| else: |
| CHIP_ENV_ROOT = os.path.join(args.chip_root, ".environment") |
| |
| GCC_ARMCOMPILER_PATH = os.path.join(CHIP_ENV_ROOT, "cipd", "packages", "arm") |
| |
| if not os.path.isdir(GCC_ARMCOMPILER_PATH): |
| print("Compiler Path is invalid: " + GCC_ARMCOMPILER_PATH) |
| sys.exit(2) |
| |
| source_file_drivers = args.sdk + args.src_path_drivers |
| source_file_driverlib = args.sdk + args.src_path_driverlib |
| dest_path = args.dest_path |
| |
| make_command = ["make", "-C", args.sdk, "CMAKE=cmake", "GCC_ARMCOMPILER=" + |
| GCC_ARMCOMPILER_PATH, "IAR_ARMCOMPILER=", "TICLANG_ARMCOMPILER=", "GENERATOR=Ninja"] |
| pid = os.fork() |
| if pid: |
| status = os.wait() |
| if os.path.exists(source_file_drivers): |
| shutil.copy(source_file_drivers, dest_path) |
| else: |
| print("Driver does not exist or path is incorrect.") |
| sys.exit(2) |
| |
| if os.path.exists(source_file_driverlib): |
| shutil.copy(source_file_driverlib, dest_path) |
| else: |
| print("Driverlib does not exist or path is incorrect.") |
| sys.exit(2) |
| else: |
| make_command = ["make", "-C", args.sdk, "CMAKE=cmake", "GCC_ARMCOMPILER=" + |
| GCC_ARMCOMPILER_PATH, "IAR_ARMCOMPILER=", "TICLANG_ARMCOMPILER=", "GENERATOR=Ninja"] |
| res = subprocess.run(make_command, capture_output=True, encoding="utf8") |
| if res.returncode != 0: |
| print("!!!!!!!!!!!! EXEC FAILED !!!!!!!!!!!!!!!!") |
| print("!!!!!!!!!!!!!!! STDOUT !!!!!!!!!!!!!!!!!!") |
| print("%s" % res.stdout) |
| print("!!!!!!!!!!!!!!! STDERR !!!!!!!!!!!!!!!!!!") |
| print("%s" % res.stderr) |
| print("res.returncode: %d", res.returncode) |
| sys.exit(1) |