summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwugensheng <[email protected]>2022-04-22 08:23:35 +0800
committerGitHub <[email protected]>2022-04-22 08:23:35 +0800
commit0624bbf0092cb96f9e477e742017be3d92aaa410 (patch)
treee6a113f46ce5706d4aa57913f4f7c36163a59df0
parent04fe6232fba7f466c69e39cb92b8d3b4b7bd311f (diff)
Decouple the addition of command line arguments (#5848)
* Decouple the addition of command line arguments * Decouple the addition of command line arguments * Modify change logs * Modify change logs * Decouple the addition of command line arguments * delete wrong edits * Modify file header * remove duplicate imports
-rw-r--r--tools/building.py125
-rw-r--r--tools/options.py123
2 files changed, 133 insertions, 115 deletions
diff --git a/tools/building.py b/tools/building.py
index 5cf0935474..7c9e61eb34 100644
--- a/tools/building.py
+++ b/tools/building.py
@@ -29,10 +29,13 @@ import sys
import string
import utils
import operator
+import rtconfig
from SCons.Script import *
from utils import _make_path_relative
from mkdist import do_copy_file
+from options import AddOptions
+
BuildOptions = {}
Projects = []
@@ -119,7 +122,6 @@ class Win32Spawn:
# generate cconfig.h file
def GenCconfigFile(env, BuildOptions):
- import rtconfig
if rtconfig.PLATFORM == 'gcc':
contents = ''
@@ -144,90 +146,13 @@ def GenCconfigFile(env, BuildOptions):
env.AppendUnique(CPPDEFINES = ['HAVE_CCONFIG_H'])
def PrepareBuilding(env, root_directory, has_libcpu=False, remove_components = []):
- import rtconfig
global BuildOptions
global Projects
global Env
global Rtt_Root
- # ===== Add option to SCons =====
- AddOption('--dist',
- dest = 'make-dist',
- action = 'store_true',
- default = False,
- help = 'make distribution')
- AddOption('--dist-strip',
- dest = 'make-dist-strip',
- action = 'store_true',
- default = False,
- help = 'make distribution and strip useless files')
- AddOption('--dist-ide',
- dest = 'make-dist-ide',
- action = 'store_true',
- default = False,
- help = 'make distribution for RT-Thread Studio IDE')
- AddOption('--project-path',
- dest = 'project-path',
- type = 'string',
- default = None,
- help = 'set dist-ide project output path')
- AddOption('--project-name',
- dest = 'project-name',
- type = 'string',
- default = None,
- help = 'set project name')
- AddOption('--reset-project-config',
- dest = 'reset-project-config',
- action = 'store_true',
- default = False,
- help = 'reset the project configurations to default')
- AddOption('--cscope',
- dest = 'cscope',
- action = 'store_true',
- default = False,
- help = 'Build Cscope cross reference database. Requires cscope installed.')
- AddOption('--clang-analyzer',
- dest = 'clang-analyzer',
- action = 'store_true',
- default = False,
- help = 'Perform static analyze with Clang-analyzer. ' + \
- 'Requires Clang installed.\n' + \
- 'It is recommended to use with scan-build like this:\n' + \
- '`scan-build scons --clang-analyzer`\n' + \
- 'If things goes well, scan-build will instruct you to invoke scan-view.')
- AddOption('--buildlib',
- dest = 'buildlib',
- type = 'string',
- help = 'building library of a component')
- AddOption('--cleanlib',
- dest = 'cleanlib',
- action = 'store_true',
- default = False,
- help = 'clean up the library by --buildlib')
- AddOption('--target',
- dest = 'target',
- type = 'string',
- help = 'set target project: mdk/mdk4/mdk5/iar/vs/vsc/ua/cdk/ses/makefile/eclipse/codelite/cmake')
- AddOption('--stackanalysis',
- dest = 'stackanalysis',
- action = 'store_true',
- default = False,
- help = 'thread stack static analysis')
- AddOption('--genconfig',
- dest = 'genconfig',
- action = 'store_true',
- default = False,
- help = 'Generate .config from rtconfig.h')
- AddOption('--useconfig',
- dest = 'useconfig',
- type = 'string',
- help = 'make rtconfig.h from config file.')
- AddOption('--verbose',
- dest = 'verbose',
- action = 'store_true',
- default = False,
- help = 'print verbose information during build')
+ AddOptions()
Env = env
Rtt_Root = os.path.abspath(root_directory)
@@ -373,27 +298,10 @@ def PrepareBuilding(env, root_directory, has_libcpu=False, remove_components = [
ThreadStackStaticAnalysis(Env)
exit(0)
- if env['PLATFORM'] != 'win32':
- AddOption('--menuconfig',
- dest = 'menuconfig',
- action = 'store_true',
- default = False,
- help = 'make menuconfig for RT-Thread BSP')
- if GetOption('menuconfig'):
- from menuconfig import menuconfig
- menuconfig(Rtt_Root)
- exit(0)
-
- AddOption('--pyconfig',
- dest = 'pyconfig',
- action = 'store_true',
- default = False,
- help = 'Python GUI menuconfig for RT-Thread BSP')
- AddOption('--pyconfig-silent',
- dest = 'pyconfig_silent',
- action = 'store_true',
- default = False,
- help = 'Don`t show pyconfig window')
+ if GetOption('menuconfig'):
+ from menuconfig import menuconfig
+ menuconfig(Rtt_Root)
+ exit(0)
if GetOption('pyconfig_silent'):
from menuconfig import guiconfig_silent
@@ -457,7 +365,6 @@ def PrepareBuilding(env, root_directory, has_libcpu=False, remove_components = [
return objs
def PrepareModuleBuilding(env, root_directory, bsp_directory):
- import rtconfig
global BuildOptions
global Env
@@ -480,17 +387,6 @@ def PrepareModuleBuilding(env, root_directory, bsp_directory):
PreProcessor.process_contents(contents)
BuildOptions = PreProcessor.cpp_namespace
- # add build/clean library option for library checking
- AddOption('--buildlib',
- dest='buildlib',
- type='string',
- help='building library of a component')
- AddOption('--cleanlib',
- dest='cleanlib',
- action='store_true',
- default=False,
- help='clean up the library by --buildlib')
-
# add program path
env.PrependENVPath('PATH', rtconfig.EXEC_PATH)
@@ -709,7 +605,7 @@ def DefineGroup(name, src, depend, **parameters):
paths.append(os.path.abspath(item))
group['LOCAL_CPPPATH'] = paths
- import rtconfig
+
if rtconfig.PLATFORM == 'gcc':
if 'CFLAGS' in group:
group['CFLAGS'] = utils.GCCC99Patch(group['CFLAGS'])
@@ -786,7 +682,7 @@ def PreBuilding():
a()
def GroupLibName(name, env):
- import rtconfig
+
if rtconfig.PLATFORM == 'armcc':
return name + '_rvds'
elif rtconfig.PLATFORM == 'gcc':
@@ -953,7 +849,6 @@ def GenTargetProject(program = None):
def EndBuilding(target, program = None):
- import rtconfig
need_exit = False
diff --git a/tools/options.py b/tools/options.py
new file mode 100644
index 0000000000..3db1e8b653
--- /dev/null
+++ b/tools/options.py
@@ -0,0 +1,123 @@
+#
+# File : options.py
+# This file is part of RT-Thread RTOS
+# COPYRIGHT (C) 2006 - 2015, RT-Thread Development Team
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# Change Logs:
+# Date Author Notes
+# 2022-04-20 WuGensheng Add Options to SCons
+#
+
+from SCons.Script import AddOption
+import platform
+
+def AddOptions():
+ ''' ===== Add options to SCons ===== '''
+
+ AddOption('--dist',
+ dest = 'make-dist',
+ action = 'store_true',
+ default = False,
+ help = 'make distribution')
+ AddOption('--dist-strip',
+ dest = 'make-dist-strip',
+ action = 'store_true',
+ default = False,
+ help = 'make distribution and strip useless files')
+ AddOption('--dist-ide',
+ dest = 'make-dist-ide',
+ action = 'store_true',
+ default = False,
+ help = 'make distribution for RT-Thread Studio IDE')
+ AddOption('--project-path',
+ dest = 'project-path',
+ type = 'string',
+ default = None,
+ help = 'set dist-ide project output path')
+ AddOption('--project-name',
+ dest = 'project-name',
+ type = 'string',
+ default = None,
+ help = 'set project name')
+ AddOption('--reset-project-config',
+ dest = 'reset-project-config',
+ action = 'store_true',
+ default = False,
+ help = 'reset the project configurations to default')
+ AddOption('--cscope',
+ dest = 'cscope',
+ action = 'store_true',
+ default = False,
+ help = 'Build Cscope cross reference database. Requires cscope installed.')
+ AddOption('--clang-analyzer',
+ dest = 'clang-analyzer',
+ action = 'store_true',
+ default = False,
+ help = 'Perform static analyze with Clang-analyzer. ' + \
+ 'Requires Clang installed.\n' + \
+ 'It is recommended to use with scan-build like this:\n' + \
+ '`scan-build scons --clang-analyzer`\n' + \
+ 'If things goes well, scan-build will instruct you to invoke scan-view.')
+ AddOption('--buildlib',
+ dest = 'buildlib',
+ type = 'string',
+ help = 'building library of a component')
+ AddOption('--cleanlib',
+ dest = 'cleanlib',
+ action = 'store_true',
+ default = False,
+ help = 'clean up the library by --buildlib')
+ AddOption('--target',
+ dest = 'target',
+ type = 'string',
+ help = 'set target project: mdk/mdk4/mdk5/iar/vs/vsc/ua/cdk/ses/makefile/eclipse/codelite/cmake')
+ AddOption('--stackanalysis',
+ dest = 'stackanalysis',
+ action = 'store_true',
+ default = False,
+ help = 'thread stack static analysis')
+ AddOption('--genconfig',
+ dest = 'genconfig',
+ action = 'store_true',
+ default = False,
+ help = 'Generate .config from rtconfig.h')
+ AddOption('--useconfig',
+ dest = 'useconfig',
+ type = 'string',
+ help = 'make rtconfig.h from config file.')
+ AddOption('--verbose',
+ dest = 'verbose',
+ action = 'store_true',
+ default = False,
+ help = 'print verbose information during build')
+ AddOption('--pyconfig',
+ dest = 'pyconfig',
+ action = 'store_true',
+ default = False,
+ help = 'Python GUI menuconfig for RT-Thread BSP')
+ AddOption('--pyconfig-silent',
+ dest = 'pyconfig_silent',
+ action = 'store_true',
+ default = False,
+ help = 'Don`t show pyconfig window')
+ if platform.system() != 'Windows':
+ AddOption('--menuconfig',
+ dest = 'menuconfig',
+ action = 'store_true',
+ default = False,
+ help = 'make menuconfig for RT-Thread BSP')
+