xref: /spdk/scripts/genconfig.py (revision 17538bdc67021ec097536c683124234db1aac374)
1b96f97cfSPawel Wodkowski#!/usr/bin/env python3
2*17538bdcSpaul luse#  SPDX-License-Identifier: BSD-3-Clause
3*17538bdcSpaul luse#  Copyright (C) 2016 Intel Corporation
4*17538bdcSpaul luse#  All rights reserved.
5*17538bdcSpaul luse#
692a02f58SDaniel Verkamp
70ee75c5fSDaniel Verkampimport os
892a02f58SDaniel Verkampimport re
992a02f58SDaniel Verkampimport sys
1092a02f58SDaniel Verkamp
110c93fc73SJames Bergstencomment = re.compile(r'^\s*#')
12339fb7cdSArtur Paszkiewiczassign = re.compile(r'^\s*([a-zA-Z0-9_]+)\s*(\?)?=\s*([^#]*)')
1392a02f58SDaniel Verkamp
140ee75c5fSDaniel Verkampargs = os.environ.copy()
151e9c0496SDaniel Verkampfor arg in sys.argv:
161e9c0496SDaniel Verkamp    m = assign.match(arg)
171e9c0496SDaniel Verkamp    if m:
181e9c0496SDaniel Verkamp        var = m.group(1).strip()
191e9c0496SDaniel Verkamp        val = m.group(3).strip()
201e9c0496SDaniel Verkamp        args[var] = val
211e9c0496SDaniel Verkamp
229dd998cdSBen Walkerdefs = {}
239dd998cdSBen Walkertry:
24ddd38a5eSPawel Wodkowski    with open("mk/config.mk") as f:
2592a02f58SDaniel Verkamp        for line in f:
2692a02f58SDaniel Verkamp            line = line.strip()
2792a02f58SDaniel Verkamp            if not comment.match(line):
2892a02f58SDaniel Verkamp                m = assign.match(line)
2992a02f58SDaniel Verkamp                if m:
3092a02f58SDaniel Verkamp                    var = m.group(1).strip()
3192a02f58SDaniel Verkamp                    default = m.group(3).strip()
3292a02f58SDaniel Verkamp                    val = default
331e9c0496SDaniel Verkamp                    if var in args:
341e9c0496SDaniel Verkamp                        val = args[var]
3592a02f58SDaniel Verkamp                    if default.lower() == 'y' or default.lower() == 'n':
3692a02f58SDaniel Verkamp                        if val.lower() == 'y':
372a0d341fSYuliya Navrotskaya                            defs["SPDK_{0}".format(var)] = 1
3892a02f58SDaniel Verkamp                        else:
392a0d341fSYuliya Navrotskaya                            defs["SPDK_{0}".format(var)] = 0
4092a02f58SDaniel Verkamp                    else:
4192a02f58SDaniel Verkamp                        strval = val.replace('"', '\"')
422a0d341fSYuliya Navrotskaya                        defs["SPDK_{0}".format(var)] = strval
439dd998cdSBen Walkerexcept IOError:
44ddd38a5eSPawel Wodkowski    print("mk/config.mk not found")
459dd998cdSBen Walker
4675cb5746SJim Harrisfor key, value in sorted(defs.items()):
479dd998cdSBen Walker    if value == 0:
481573df0fSDaniel Verkamp        print("#undef {0}".format(key))
499dd998cdSBen Walker    else:
501573df0fSDaniel Verkamp        print("#define {0} {1}".format(key, value))
51