1*10465441SEvalZero# 2*10465441SEvalZero# File : vsc.py 3*10465441SEvalZero# This file is part of RT-Thread RTOS 4*10465441SEvalZero# COPYRIGHT (C) 2006 - 2018, RT-Thread Development Team 5*10465441SEvalZero# 6*10465441SEvalZero# This program is free software; you can redistribute it and/or modify 7*10465441SEvalZero# it under the terms of the GNU General Public License as published by 8*10465441SEvalZero# the Free Software Foundation; either version 2 of the License, or 9*10465441SEvalZero# (at your option) any later version. 10*10465441SEvalZero# 11*10465441SEvalZero# This program is distributed in the hope that it will be useful, 12*10465441SEvalZero# but WITHOUT ANY WARRANTY; without even the implied warranty of 13*10465441SEvalZero# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*10465441SEvalZero# GNU General Public License for more details. 15*10465441SEvalZero# 16*10465441SEvalZero# You should have received a copy of the GNU General Public License along 17*10465441SEvalZero# with this program; if not, write to the Free Software Foundation, Inc., 18*10465441SEvalZero# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19*10465441SEvalZero# 20*10465441SEvalZero# Change Logs: 21*10465441SEvalZero# Date Author Notes 22*10465441SEvalZero# 2018-05-30 Bernard The first version 23*10465441SEvalZero 24*10465441SEvalZero""" 25*10465441SEvalZeroUtils for VSCode 26*10465441SEvalZero""" 27*10465441SEvalZero 28*10465441SEvalZeroimport os 29*10465441SEvalZeroimport json 30*10465441SEvalZeroimport utils 31*10465441SEvalZeroimport rtconfig 32*10465441SEvalZero 33*10465441SEvalZerodef GenerateCFiles(env): 34*10465441SEvalZero """ 35*10465441SEvalZero Generate c_cpp_properties files 36*10465441SEvalZero """ 37*10465441SEvalZero if not os.path.exists('.vscode'): 38*10465441SEvalZero os.mkdir('.vscode') 39*10465441SEvalZero 40*10465441SEvalZero vsc_file = open('.vscode/c_cpp_properties.json', 'w') 41*10465441SEvalZero if vsc_file: 42*10465441SEvalZero info = utils.ProjectInfo(env) 43*10465441SEvalZero 44*10465441SEvalZero cc = os.path.join(rtconfig.EXEC_PATH, rtconfig.CC) 45*10465441SEvalZero cc = os.path.abspath(cc).replace('\\', '/') 46*10465441SEvalZero 47*10465441SEvalZero config_obj = {} 48*10465441SEvalZero config_obj['name'] = 'Win32' 49*10465441SEvalZero config_obj['defines'] = info['CPPDEFINES'] 50*10465441SEvalZero config_obj['intelliSenseMode'] = 'clang-x64' 51*10465441SEvalZero config_obj['compilerPath'] = cc 52*10465441SEvalZero config_obj['cStandard'] = "c99" 53*10465441SEvalZero config_obj['cppStandard'] = "c++11" 54*10465441SEvalZero 55*10465441SEvalZero # format "a/b," to a/b. remove first quotation mark("),and remove end (",) 56*10465441SEvalZero includePath = [] 57*10465441SEvalZero for i in info['CPPPATH']: 58*10465441SEvalZero if i[0] == '\"' and i[len(i) - 2:len(i)] == '\",': 59*10465441SEvalZero includePath.append(i[1:len(i) - 2]) 60*10465441SEvalZero else: 61*10465441SEvalZero includePath.append(i) 62*10465441SEvalZero config_obj['includePath'] = includePath 63*10465441SEvalZero 64*10465441SEvalZero json_obj = {} 65*10465441SEvalZero json_obj['configurations'] = [config_obj] 66*10465441SEvalZero 67*10465441SEvalZero vsc_file.write(json.dumps(json_obj, ensure_ascii=False, indent=4)) 68*10465441SEvalZero vsc_file.close() 69*10465441SEvalZero 70*10465441SEvalZero return 71*10465441SEvalZero 72*10465441SEvalZerodef GenerateVSCode(env): 73*10465441SEvalZero print('Update setting files for VSCode...') 74*10465441SEvalZero GenerateCFiles(env) 75*10465441SEvalZero print('Done!') 76*10465441SEvalZero 77*10465441SEvalZero return 78