xref: /nrf52832-nimble/rt-thread/tools/wizard.py (revision 104654410c56c573564690304ae786df310c91fc)
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