1#!/usr/bin/env python 2 3import os 4import re 5import sys 6 7comment = re.compile('^\s*#') 8assign = re.compile('^\s*([a-zA-Z_]+)\s*(\?)?=\s*([^#]*)') 9 10args = os.environ.copy() 11for arg in sys.argv: 12 m = assign.match(arg) 13 if m: 14 var = m.group(1).strip() 15 val = m.group(3).strip() 16 args[var] = val 17 18# special case for DPDK_DIR, which is short for CONFIG_DPDK_DIR 19if 'DPDK_DIR' in args and 'CONFIG_DPDK_DIR' not in args: 20 args['CONFIG_DPDK_DIR'] = args['DPDK_DIR'] 21 22defs = {} 23for config in ('CONFIG', 'CONFIG.local'): 24 try: 25 with open(config) as f: 26 for line in f: 27 line = line.strip() 28 if not comment.match(line): 29 m = assign.match(line) 30 if m: 31 var = m.group(1).strip() 32 default = m.group(3).strip() 33 val = default 34 if var in args: 35 val = args[var] 36 if default.lower() == 'y' or default.lower() == 'n': 37 if val.lower() == 'y': 38 defs["SPDK_{0}".format(var)] = 1 39 else: 40 defs["SPDK_{0}".format(var)] = 0 41 else: 42 strval = val.replace('"', '\"') 43 defs["SPDK_{0}".format(var)] = strval 44 except IOError: 45 continue 46 47for key, value in sorted(defs.items()): 48 if value == 0: 49 print("#undef {0}".format(key)) 50 else: 51 print("#define {0} {1}".format(key, value)) 52