From 0624bbf0092cb96f9e477e742017be3d92aaa410 Mon Sep 17 00:00:00 2001 From: wugensheng <82647680+wugensheng-code@users.noreply.github.com> Date: Fri, 22 Apr 2022 08:23:35 +0800 Subject: [PATCH] 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 --- tools/building.py | 125 ++++------------------------------------------ tools/options.py | 123 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+), 115 deletions(-) create mode 100644 tools/options.py 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') + -- GitLab