xref: /spdk/scripts/genconfig.py (revision 22898a91b9b6f289933db19b0175821cfb7e7820)
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