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.
39 lines
1.2 KiB
39 lines
1.2 KiB
# 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) 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 {}
|
|
|