1*10465441SEvalZero#! /usr/bin/env python 2*10465441SEvalZero#coding=utf-8 3*10465441SEvalZero 4*10465441SEvalZero# 5*10465441SEvalZero# File : wizard.py 6*10465441SEvalZero# This file is part of RT-Thread RTOS 7*10465441SEvalZero# COPYRIGHT (C) 2006 - 2015, RT-Thread Development Team 8*10465441SEvalZero# 9*10465441SEvalZero# This program is free software; you can redistribute it and/or modify 10*10465441SEvalZero# it under the terms of the GNU General Public License as published by 11*10465441SEvalZero# the Free Software Foundation; either version 2 of the License, or 12*10465441SEvalZero# (at your option) any later version. 13*10465441SEvalZero# 14*10465441SEvalZero# This program is distributed in the hope that it will be useful, 15*10465441SEvalZero# but WITHOUT ANY WARRANTY; without even the implied warranty of 16*10465441SEvalZero# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17*10465441SEvalZero# GNU General Public License for more details. 18*10465441SEvalZero# 19*10465441SEvalZero# You should have received a copy of the GNU General Public License along 20*10465441SEvalZero# with this program; if not, write to the Free Software Foundation, Inc., 21*10465441SEvalZero# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 22*10465441SEvalZero# 23*10465441SEvalZero# Change Logs: 24*10465441SEvalZero# Date Author Notes 25*10465441SEvalZero# 2015-01-20 Bernard Add copyright information 26*10465441SEvalZero# 27*10465441SEvalZero 28*10465441SEvalZero""" 29*10465441SEvalZerowizard.py - a script to generate SConscript in RT-Thread RTOS. 30*10465441SEvalZero 31*10465441SEvalZero`wizard --component name' to generate SConscript for name component. 32*10465441SEvalZero`wizard --bridge' to generate SConscript as a bridge to connect each 33*10465441SEvalZeroSConscript script file of sub-directory. 34*10465441SEvalZero""" 35*10465441SEvalZero 36*10465441SEvalZeroimport sys 37*10465441SEvalZero 38*10465441SEvalZeroSConscript_com = '''# RT-Thread building script for component 39*10465441SEvalZero 40*10465441SEvalZerofrom building import * 41*10465441SEvalZero 42*10465441SEvalZerocwd = GetCurrentDir() 43*10465441SEvalZerosrc = Glob('*.c') + Glob('*.cpp') 44*10465441SEvalZeroCPPPATH = [cwd] 45*10465441SEvalZero 46*10465441SEvalZerogroup = DefineGroup('COMPONENT_NAME', src, depend = [''], CPPPATH = CPPPATH) 47*10465441SEvalZero 48*10465441SEvalZeroReturn('group') 49*10465441SEvalZero''' 50*10465441SEvalZero 51*10465441SEvalZeroSConscript_bridge = '''# RT-Thread building script for bridge 52*10465441SEvalZero 53*10465441SEvalZeroimport os 54*10465441SEvalZerofrom building import * 55*10465441SEvalZero 56*10465441SEvalZerocwd = GetCurrentDir() 57*10465441SEvalZeroobjs = [] 58*10465441SEvalZerolist = os.listdir(cwd) 59*10465441SEvalZero 60*10465441SEvalZerofor d in list: 61*10465441SEvalZero path = os.path.join(cwd, d) 62*10465441SEvalZero if os.path.isfile(os.path.join(path, 'SConscript')): 63*10465441SEvalZero objs = objs + SConscript(os.path.join(d, 'SConscript')) 64*10465441SEvalZero 65*10465441SEvalZeroReturn('objs') 66*10465441SEvalZero''' 67*10465441SEvalZero 68*10465441SEvalZerodef usage(): 69*10465441SEvalZero print('wizard --component name') 70*10465441SEvalZero print('wizard --bridge') 71*10465441SEvalZero 72*10465441SEvalZerodef gen_component(name): 73*10465441SEvalZero print('generate SConscript for ' + name) 74*10465441SEvalZero text = SConscript_com.replace('COMPONENT_NAME', name) 75*10465441SEvalZero f = open('SConscript', 'w') 76*10465441SEvalZero f.write(text) 77*10465441SEvalZero f.close() 78*10465441SEvalZero 79*10465441SEvalZerodef gen_bridge(): 80*10465441SEvalZero print('generate SConscript for bridge') 81*10465441SEvalZero f = open('SConscript', 'w') 82*10465441SEvalZero f.write(SConscript_bridge) 83*10465441SEvalZero f.close() 84*10465441SEvalZero 85*10465441SEvalZeroif __name__ == '__main__': 86*10465441SEvalZero if len(sys.argv) == 1: 87*10465441SEvalZero usage() 88*10465441SEvalZero sys.exit(2) 89*10465441SEvalZero 90*10465441SEvalZero if sys.argv[1] == '--component': 91*10465441SEvalZero gen_component(sys.argv[2]) 92*10465441SEvalZero elif sys.argv[1] == '--bridge': 93*10465441SEvalZero gen_bridge() 94*10465441SEvalZero else: 95*10465441SEvalZero usage() 96