#!/usr/bin/env python import os import re import sys comment = re.compile('^\s*#') assign = re.compile('^\s*([a-zA-Z_]+)\s*(\?)?=\s*([^#]*)') args = os.environ.copy() for arg in sys.argv: m = assign.match(arg) if m: var = m.group(1).strip() val = m.group(3).strip() args[var] = val # special case for DPDK_DIR, which is short for CONFIG_DPDK_DIR if 'DPDK_DIR' in args and 'CONFIG_DPDK_DIR' not in args: args['CONFIG_DPDK_DIR'] = args['DPDK_DIR'] defs = {} for config in ('CONFIG', 'CONFIG.local'): try: with open(config) as f: for line in f: line = line.strip() if not comment.match(line): m = assign.match(line) if m: var = m.group(1).strip() default = m.group(3).strip() val = default if var in args: val = args[var] if default.lower() == 'y' or default.lower() == 'n': if val.lower() == 'y': defs["SPDK_{0}".format(var)] = 1 else: defs["SPDK_{0}".format(var)] = 0 else: strval = val.replace('"', '\"') defs["SPDK_{0}".format(var)] = strval except IOError: continue for key, value in sorted(defs.items()): if value == 0: print("#undef {0}".format(key)) else: print("#define {0} {1}".format(key, value))