| # Copyright (c) 2021 The Linux Foundation |
| # |
| # SPDX-License-Identifier: Apache-2.0 |
| |
| from west import log |
| |
| # Parse a CMakeCache file and return a dict of key:value (discarding |
| # type hints). |
| def parseCMakeCacheFile(filePath): |
| log.dbg(f"parsing CMake cache file at {filePath}") |
| kv = {} |
| try: |
| with open(filePath, "r") as f: |
| # should be a short file, so we'll use readlines |
| lines = f.readlines() |
| |
| # walk through and look for non-comment, non-empty lines |
| for line in lines: |
| sline = line.strip() |
| if sline == "": |
| continue |
| if sline.startswith("#") or sline.startswith("//"): |
| continue |
| |
| # parse out : and = characters |
| pline1 = sline.split(":", maxsplit=1) |
| if len(pline1) != 2: |
| continue |
| pline2 = pline1[1].split("=", maxsplit=1) |
| if len(pline2) != 2: |
| continue |
| kv[pline1[0]] = pline2[1] |
| |
| return kv |
| |
| except OSError as e: |
| log.err(f"Error loading {filePath}: {str(e)}") |
| return {} |