summaryrefslogtreecommitdiff
path: root/chromeos/scripts/splitconfig
diff options
context:
space:
mode:
Diffstat (limited to 'chromeos/scripts/splitconfig')
-rwxr-xr-xchromeos/scripts/splitconfig49
1 files changed, 49 insertions, 0 deletions
diff --git a/chromeos/scripts/splitconfig b/chromeos/scripts/splitconfig
new file mode 100755
index 000000000000..262fa2015c1d
--- /dev/null
+++ b/chromeos/scripts/splitconfig
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+
+import os
+import re
+import sys
+
+allconfigs = {}
+
+# Parse config files
+for config in os.listdir("."):
+ # Only config.*
+ if not config.startswith("config."):
+ continue
+ # Ignore emacs backups
+ if config.endswith("~"):
+ continue
+ # Nothing that is disabled, or remnant
+ if re.search("\.(default|disabled|stub)$", config):
+ continue
+
+ allconfigs[config] = set()
+
+ for line in open(config):
+ m = re.match("#*\s*CONFIG_(\w+)[\s=](.*)$", line)
+ if not m:
+ continue
+ option, value = m.groups()
+ allconfigs[config].add((option, value))
+
+# Split out common config options
+common = allconfigs.values()[0].copy()
+for config in allconfigs.keys():
+ common &= allconfigs[config]
+for config in allconfigs.keys():
+ allconfigs[config] -= common
+allconfigs["config.common"] = common
+
+# Generate new splitconfigs
+for config in allconfigs.keys():
+ f = open(config, "w")
+ command = os.path.basename(sys.argv[0])
+ print >>f, "#\n# Config options generated by %s\n#" % command
+ for option, value in sorted(list(allconfigs[config])):
+ if value == "is not set":
+ print >>f, "# CONFIG_%s %s" % (option, value)
+ else:
+ print >>f, "CONFIG_%s=%s" % (option, value)
+
+ f.close()