summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbernard <[email protected]>2017-11-02 16:57:17 +0800
committerbernard <[email protected]>2017-11-02 16:57:17 +0800
commitf08d1f503408b9eab9ce440828639915b7db7520 (patch)
tree2b60d7a158c68b2b53bf5cdb780985e13fc42f3c
parentb2057f506a09e2adef81fc77efd697d16ae14bec (diff)
[Tools] Add genconfig command in scons.
-rw-r--r--tools/building.py10
-rw-r--r--tools/genconf.py32
2 files changed, 42 insertions, 0 deletions
diff --git a/tools/building.py b/tools/building.py
index f5cbd31617..730ae5bc67 100644
--- a/tools/building.py
+++ b/tools/building.py
@@ -258,6 +258,16 @@ def PrepareBuilding(env, root_directory, has_libcpu=False, remove_components = [
and rtconfig.PLATFORM == 'gcc':
AddDepend('RT_USING_MINILIBC')
+ AddOption('--genconfig',
+ dest = 'genconfig',
+ action = 'store_true',
+ default = False,
+ help = 'Generate .config from rtconfig.h')
+ if GetOption('genconfig'):
+ from genconf import genconfig
+ genconfig()
+ exit(0)
+
# add comstr option
AddOption('--verbose',
dest='verbose',
diff --git a/tools/genconf.py b/tools/genconf.py
new file mode 100644
index 0000000000..de8681e1f8
--- /dev/null
+++ b/tools/genconf.py
@@ -0,0 +1,32 @@
+import os
+
+def genconfig() :
+ from SCons.Script import SCons
+
+ PreProcessor = SCons.cpp.PreProcessor()
+
+ try:
+ f = file('rtconfig.h', 'r')
+ contents = f.read()
+ f.close()
+ except :
+ print("Open rtconfig.h file failed.")
+
+ PreProcessor.process_contents(contents)
+ options = PreProcessor.cpp_namespace
+
+ try:
+ f = file('.config', 'w')
+ for (opt, value) in options.items():
+ if type(value) == type(1):
+ f.write("CONFIG_%s=%d\n" % (opt, value))
+
+ if type(value) == type('') and value == '':
+ f.write("CONFIG_%s=y\n" % opt)
+ elif type(value) == type('str'):
+ f.write("CONFIG_%s=%s\n" % (opt, value))
+
+ print("Generate .config done!")
+ f.close()
+ except:
+ print("Generate .config file failed.")