Merge pull request #456 from BernardXiong/master
[tools] Add package.json as building script.
This commit is contained in:
commit
3949ae258b
25
README.md
25
README.md
@ -39,6 +39,31 @@ As a special exception, including RT-Thread RTOS header files in a file, instant
|
||||
|
||||
RT-Thread RTOS uses [scons](http://www.scons.org) as its building system. Therefore, please install scons and Python 2.7 firstly.
|
||||
|
||||
So far, the RT-Thread scons building system support the command line compiling or generate some IDE's project. There are some option varaibles in the scons building script:
|
||||
|
||||
In rtconfig.py file:
|
||||
|
||||
* ```RTT_CC``` the compiler which you want to use, gcc/keil/iar.
|
||||
* ```EXEC_PATH``` the path of compiler.
|
||||
|
||||
In SConstruct file:
|
||||
|
||||
```RTT_ROOT``` This variable is the root directory of RT-Thread RTOS. If you build the porting in the bsp directory, you can use the default value. Also, you can set the root directory in ```RTT_ROOT``` environment variable.
|
||||
|
||||
When you set these variables correctly, you can use command:
|
||||
|
||||
scons
|
||||
|
||||
under BSP directory to simplely compile RT-Thread RTOS.
|
||||
|
||||
If you want to generate the IDE's project file, firstly you should change the ```RTT_CC``` in the rtconfig.py file. Then use command:
|
||||
|
||||
scons --target=mdk/mdk4/iar/cb -s
|
||||
|
||||
to generate the project file.
|
||||
|
||||
NOTE: RT-Thread scons building system will tailor the system according to your rtconfig.h configuration header file. For example, if you disable the lwIP in the rtconfig.h by commenting the ```#define RT_USING_LWIP```, the generated project file has no lwIP related files.
|
||||
|
||||
## Contribution ##
|
||||
|
||||
Thank all of RT-Thread Developers.
|
||||
|
@ -1,3 +1,27 @@
|
||||
/*
|
||||
* File : crt.cpp
|
||||
* This file is part of Device File System in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2008-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
|
||||
* 2015-03-07 Bernard Add copyright header.
|
||||
*/
|
||||
|
||||
#include <rtthread.h>
|
||||
#include "crt.h"
|
||||
|
||||
|
@ -1,3 +1,27 @@
|
||||
/*
|
||||
* File : crt.h
|
||||
* This file is part of Device File System in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2008-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
|
||||
* 2015-03-07 Bernard Add copyright header.
|
||||
*/
|
||||
|
||||
#ifndef CRT_H_
|
||||
#define CRT_H_
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* File : crt_init.c
|
||||
* This file is part of Device File System in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2008-2011, RT-Thread Development Team
|
||||
* COPYRIGHT (C) 2008-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
|
||||
|
@ -1,207 +1,18 @@
|
||||
Import('RTT_ROOT')
|
||||
Import('rtconfig')
|
||||
from building import *
|
||||
|
||||
# The set of source files associated with this SConscript file.
|
||||
dfs = Split("""
|
||||
src/dfs.c
|
||||
src/dfs_fs.c
|
||||
src/dfs_file.c
|
||||
src/dfs_posix.c
|
||||
""")
|
||||
src = Glob('src/*.c')
|
||||
cwd = GetCurrentDir()
|
||||
CPPPATH = [cwd + "/include"]
|
||||
|
||||
# DFS-ELMFAT options
|
||||
elmfat = Split("""
|
||||
filesystems/elmfat/dfs_elm.c
|
||||
filesystems/elmfat/ff.c
|
||||
""")
|
||||
group = DefineGroup('Filesystem', src, depend = ['RT_USING_DFS'], CPPPATH = CPPPATH)
|
||||
|
||||
# DFS-ROMFS options
|
||||
romfs = Split("""
|
||||
filesystems/romfs/dfs_romfs.c
|
||||
""")
|
||||
if not GetDepend('DFS_ROMFS_ROOT'):
|
||||
romfs = romfs + Split('filesystems/romfs/romfs.c')
|
||||
|
||||
# DFS-RAMFS options
|
||||
ramfs = Split("""
|
||||
filesystems/ramfs/dfs_ramfs.c
|
||||
""")
|
||||
|
||||
# DFS-DeviceFS options
|
||||
devfs = Split("""
|
||||
filesystems/devfs/devfs.c
|
||||
filesystems/devfs/console.c
|
||||
""")
|
||||
|
||||
# DFS-YAFFS2 options
|
||||
yaffs2_src = Split("""
|
||||
filesystems/yaffs2/dfs_yaffs2.c
|
||||
filesystems/yaffs2/yaffs_osglue.c
|
||||
filesystems/yaffs2/yaffs_nandcfg.c
|
||||
|
||||
filesystems/yaffs2/yaffs/yaffs_allocator.c
|
||||
filesystems/yaffs2/yaffs/yaffs_bitmap.c
|
||||
filesystems/yaffs2/yaffs/yaffs_checkptrw.c
|
||||
filesystems/yaffs2/yaffs/yaffs_ecc.c
|
||||
filesystems/yaffs2/yaffs/yaffs_guts.c
|
||||
filesystems/yaffs2/yaffs/yaffs_nameval.c
|
||||
filesystems/yaffs2/yaffs/yaffs_nand.c
|
||||
filesystems/yaffs2/yaffs/yaffs_packedtags1.c
|
||||
filesystems/yaffs2/yaffs/yaffs_packedtags2.c
|
||||
filesystems/yaffs2/yaffs/yaffs_summary.c
|
||||
filesystems/yaffs2/yaffs/yaffs_tagscompat.c
|
||||
filesystems/yaffs2/yaffs/yaffs_verify.c
|
||||
filesystems/yaffs2/yaffs/yaffs_yaffs1.c
|
||||
filesystems/yaffs2/yaffs/yaffs_yaffs2.c
|
||||
|
||||
filesystems/yaffs2/yaffs/direct/yaffs_attribs.c
|
||||
filesystems/yaffs2/yaffs/direct/yaffs_hweight.c
|
||||
filesystems/yaffs2/yaffs/direct/yaffs_nandif.c
|
||||
filesystems/yaffs2/yaffs/direct/yaffs_qsort.c
|
||||
filesystems/yaffs2/yaffs/direct/yaffsfs.c
|
||||
|
||||
""")
|
||||
|
||||
nfs = Split('''
|
||||
filesystems/nfs/mount_clnt.c
|
||||
filesystems/nfs/mount_xdr.c
|
||||
filesystems/nfs/nfs_clnt.c
|
||||
filesystems/nfs/nfs_xdr.c
|
||||
filesystems/nfs/dfs_nfs.c
|
||||
filesystems/nfs/rpc/auth_none.c
|
||||
filesystems/nfs/rpc/clnt_generic.c
|
||||
filesystems/nfs/rpc/clnt_udp.c
|
||||
filesystems/nfs/rpc/rpc_prot.c
|
||||
filesystems/nfs/rpc/pmap.c
|
||||
filesystems/nfs/rpc/xdr.c
|
||||
filesystems/nfs/rpc/xdr_mem.c
|
||||
''')
|
||||
|
||||
uffs = Split('''
|
||||
filesystems/uffs/src/uffs/uffs_badblock.c
|
||||
filesystems/uffs/src/uffs/uffs_blockinfo.c
|
||||
filesystems/uffs/src/uffs/uffs_buf.c
|
||||
filesystems/uffs/src/uffs/uffs_debug.c
|
||||
filesystems/uffs/src/uffs/uffs_device.c
|
||||
filesystems/uffs/src/uffs/uffs_ecc.c
|
||||
filesystems/uffs/src/uffs/uffs_crc.c
|
||||
filesystems/uffs/src/uffs/uffs_fd.c
|
||||
filesystems/uffs/src/uffs/uffs_find.c
|
||||
filesystems/uffs/src/uffs/uffs_flash.c
|
||||
filesystems/uffs/src/uffs/uffs_fs.c
|
||||
filesystems/uffs/src/uffs/uffs_init.c
|
||||
filesystems/uffs/src/uffs/uffs_mem.c
|
||||
filesystems/uffs/src/uffs/uffs_mtb.c
|
||||
filesystems/uffs/src/uffs/uffs_pool.c
|
||||
filesystems/uffs/src/uffs/uffs_public.c
|
||||
filesystems/uffs/src/uffs/uffs_tree.c
|
||||
filesystems/uffs/src/uffs/uffs_utils.c
|
||||
filesystems/uffs/src/uffs/uffs_version.c
|
||||
|
||||
filesystems/uffs/dfs_uffs.c
|
||||
filesystems/uffs/uffs_nandif.c
|
||||
filesystems/uffs/uffs_rtthread.c
|
||||
''')
|
||||
|
||||
jffs2 = Split('''
|
||||
filesystems/jffs2/dfs_jffs2.c
|
||||
filesystems/jffs2/porting.c
|
||||
|
||||
filesystems/jffs2/cyg/compress/src/adler32.c
|
||||
filesystems/jffs2/cyg/compress/src/compress.c
|
||||
filesystems/jffs2/cyg/compress/src/deflate.c
|
||||
filesystems/jffs2/cyg/compress/src/infback.c
|
||||
filesystems/jffs2/cyg/compress/src/inffast.c
|
||||
filesystems/jffs2/cyg/compress/src/inflate.c
|
||||
filesystems/jffs2/cyg/compress/src/inftrees.c
|
||||
filesystems/jffs2/cyg/compress/src/trees.c
|
||||
filesystems/jffs2/cyg/compress/src/uncompr.c
|
||||
filesystems/jffs2/cyg/compress/src/zutil.c
|
||||
|
||||
filesystems/jffs2/cyg/crc/crc16.c
|
||||
filesystems/jffs2/cyg/crc/crc32.c
|
||||
filesystems/jffs2/cyg/crc/posix_crc.c
|
||||
filesystems/jffs2/kernel/rbtree.c
|
||||
filesystems/jffs2/src/build.c
|
||||
filesystems/jffs2/src/compr.c
|
||||
filesystems/jffs2/src/compr_rtime.c
|
||||
filesystems/jffs2/src/compr_rubin.c
|
||||
filesystems/jffs2/src/compr_zlib.c
|
||||
filesystems/jffs2/src/debug.c
|
||||
filesystems/jffs2/src/dir-ecos.c
|
||||
filesystems/jffs2/src/erase.c
|
||||
filesystems/jffs2/src/flashio.c
|
||||
filesystems/jffs2/src/fs-ecos.c
|
||||
filesystems/jffs2/src/gc.c
|
||||
filesystems/jffs2/src/gcthread.c
|
||||
filesystems/jffs2/src/malloc-ecos.c
|
||||
filesystems/jffs2/src/nodelist.c
|
||||
filesystems/jffs2/src/nodemgmt.c
|
||||
filesystems/jffs2/src/read.c
|
||||
filesystems/jffs2/src/readinode.c
|
||||
filesystems/jffs2/src/scan.c
|
||||
filesystems/jffs2/src/write.c
|
||||
''')
|
||||
|
||||
src_local = dfs
|
||||
CPPDEFINES = []
|
||||
|
||||
# The set of source files associated with this SConscript file.
|
||||
path = [RTT_ROOT + '/components/dfs', RTT_ROOT + '/components/dfs/include']
|
||||
|
||||
if GetDepend('RT_USING_DFS_YAFFS2'):
|
||||
src_local = src_local + yaffs2_src
|
||||
path = path + [RTT_ROOT + '/components/dfs/filesystems/yaffs2/yaffs', \
|
||||
RTT_ROOT + '/components/dfs/filesystems/yaffs2/yaffs/direct' ]
|
||||
|
||||
if GetDepend('RT_USING_DFS_ELMFAT'):
|
||||
if GetDepend('RT_DFS_ELM_USE_LFN'):
|
||||
if GetDepend('RT_DFS_ELM_CODE_PAGE_FILE'):
|
||||
elmfat += ['filesystems/elmfat/option/ccfile.c']
|
||||
else:
|
||||
if GetConfigValue('RT_DFS_ELM_CODE_PAGE') == 932:
|
||||
elmfat += ['filesystems/elmfat/option/cc932.c']
|
||||
elif GetConfigValue('RT_DFS_ELM_CODE_PAGE') == 936:
|
||||
elmfat += ['filesystems/elmfat/option/cc936.c']
|
||||
elif GetConfigValue('RT_DFS_ELM_CODE_PAGE') == 949:
|
||||
elmfat += ['filesystems/elmfat/option/cc949.c']
|
||||
elif GetConfigValue('RT_DFS_ELM_CODE_PAGE') == 950:
|
||||
elmfat += ['filesystems/elmfat/option/cc950.c']
|
||||
else:
|
||||
elmfat += ['filesystems/elmfat/option/ccsbcs.c']
|
||||
src_local = src_local + elmfat
|
||||
|
||||
if GetDepend(['RT_USING_DFS_NFS', 'RT_USING_LWIP']):
|
||||
src_local = src_local + nfs
|
||||
path = path + [RTT_ROOT + '/components/dfs/filesystems/nfs']
|
||||
|
||||
if GetDepend('RT_USING_DFS_ROMFS'):
|
||||
src_local = src_local + romfs
|
||||
path = path + [RTT_ROOT + '/components/dfs/filesystems/romfs']
|
||||
|
||||
if GetDepend('RT_USING_DFS_RAMFS'):
|
||||
src_local = src_local + ramfs
|
||||
path = path + [RTT_ROOT + '/components/dfs/filesystems/ramfs']
|
||||
|
||||
if GetDepend('RT_USING_DFS_DEVFS'):
|
||||
src_local = src_local + devfs
|
||||
path = path + [RTT_ROOT + '/components/dfs/filesystems/devfs']
|
||||
|
||||
if GetDepend('RT_USING_DFS_UFFS'):
|
||||
src_local = src_local + uffs
|
||||
path = path + [RTT_ROOT + '/components/dfs/filesystems/uffs/src/inc', \
|
||||
RTT_ROOT + '/components/dfs/filesystems/uffs'] #, \
|
||||
# RTT_ROOT + '/components/dfs/filesystems/uffs/flash']
|
||||
|
||||
if GetDepend('RT_USING_DFS_JFFS2'):
|
||||
src_local = src_local + jffs2
|
||||
path = path + [RTT_ROOT + '/components/dfs/filesystems/jffs2/src', \
|
||||
RTT_ROOT + '/components/dfs/filesystems/jffs2/kernel', \
|
||||
RTT_ROOT + '/components/dfs/filesystems/jffs2/include', \
|
||||
RTT_ROOT + '/components/dfs/filesystems/jffs2', \
|
||||
RTT_ROOT + '/components/dfs/filesystems/jffs2/cyg/compress']
|
||||
|
||||
group = DefineGroup('Filesystem', src_local, depend = ['RT_USING_DFS'], CPPPATH = path, CPPDEFINES = CPPDEFINES)
|
||||
if GetDepend('RT_USING_DFS'):
|
||||
# search in the file system implementation
|
||||
list = os.listdir(cwd)
|
||||
|
||||
for item in list:
|
||||
if os.path.isfile(os.path.join(cwd, item, 'SConscript')):
|
||||
group = group + SConscript(os.path.join(item, 'SConscript'))
|
||||
|
||||
Return('group')
|
||||
|
15
components/dfs/filesystems/SConscript
Normal file
15
components/dfs/filesystems/SConscript
Normal file
@ -0,0 +1,15 @@
|
||||
# RT-Thread building script for bridge
|
||||
|
||||
import os
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
objs = []
|
||||
list = os.listdir(cwd)
|
||||
|
||||
for d in list:
|
||||
path = os.path.join(cwd, d)
|
||||
if os.path.isfile(os.path.join(path, 'SConscript')):
|
||||
objs = objs + SConscript(os.path.join(d, 'SConscript'))
|
||||
|
||||
Return('objs')
|
11
components/dfs/filesystems/devfs/SConscript
Normal file
11
components/dfs/filesystems/devfs/SConscript
Normal file
@ -0,0 +1,11 @@
|
||||
# RT-Thread building script for component
|
||||
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
src = Glob('*.c')
|
||||
CPPPATH = [cwd]
|
||||
|
||||
group = DefineGroup('Filesystem', src, depend = ['RT_USING_DFS', 'RT_USING_DFS_DEVFS'], CPPPATH = CPPPATH)
|
||||
|
||||
Return('group')
|
26
components/dfs/filesystems/elmfat/SConscript
Normal file
26
components/dfs/filesystems/elmfat/SConscript
Normal file
@ -0,0 +1,26 @@
|
||||
# RT-Thread building script for component
|
||||
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
src = Glob('*.c')
|
||||
CPPPATH = [cwd]
|
||||
|
||||
if GetDepend('RT_DFS_ELM_USE_LFN'):
|
||||
if GetDepend('RT_DFS_ELM_CODE_PAGE_FILE'):
|
||||
src += ['option/ccfile.c']
|
||||
else:
|
||||
if GetConfigValue('RT_DFS_ELM_CODE_PAGE') == 932:
|
||||
src += ['option/cc932.c']
|
||||
elif GetConfigValue('RT_DFS_ELM_CODE_PAGE') == 936:
|
||||
src += ['option/cc936.c']
|
||||
elif GetConfigValue('RT_DFS_ELM_CODE_PAGE') == 949:
|
||||
src += ['option/cc949.c']
|
||||
elif GetConfigValue('RT_DFS_ELM_CODE_PAGE') == 950:
|
||||
src += ['option/cc950.c']
|
||||
else:
|
||||
src += ['option/ccsbcs.c']
|
||||
|
||||
group = DefineGroup('Filesystem', src, depend = ['RT_USING_DFS', 'RT_USING_DFS_ELMFAT'], CPPPATH = CPPPATH)
|
||||
|
||||
Return('group')
|
50
components/dfs/filesystems/jffs2/SConscript
Normal file
50
components/dfs/filesystems/jffs2/SConscript
Normal file
@ -0,0 +1,50 @@
|
||||
# RT-Thread building script for component
|
||||
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
src = Split('''
|
||||
dfs_jffs2.c
|
||||
porting.c
|
||||
|
||||
cyg/compress/src/adler32.c
|
||||
cyg/compress/src/compress.c
|
||||
cyg/compress/src/deflate.c
|
||||
cyg/compress/src/infback.c
|
||||
cyg/compress/src/inffast.c
|
||||
cyg/compress/src/inflate.c
|
||||
cyg/compress/src/inftrees.c
|
||||
cyg/compress/src/trees.c
|
||||
cyg/compress/src/uncompr.c
|
||||
cyg/compress/src/zutil.c
|
||||
|
||||
cyg/crc/crc16.c
|
||||
cyg/crc/crc32.c
|
||||
cyg/crc/posix_crc.c
|
||||
kernel/rbtree.c
|
||||
src/build.c
|
||||
src/compr.c
|
||||
src/compr_rtime.c
|
||||
src/compr_rubin.c
|
||||
src/compr_zlib.c
|
||||
src/debug.c
|
||||
src/dir-ecos.c
|
||||
src/erase.c
|
||||
src/flashio.c
|
||||
src/fs-ecos.c
|
||||
src/gc.c
|
||||
src/gcthread.c
|
||||
src/malloc-ecos.c
|
||||
src/nodelist.c
|
||||
src/nodemgmt.c
|
||||
src/read.c
|
||||
src/readinode.c
|
||||
src/scan.c
|
||||
src/write.c
|
||||
''')
|
||||
|
||||
CPPPATH = [cwd, cwd + '/include', cwd + '/src', cwd + '/cyg', cwd + '/kernel', cwd + '/cyg/compress']
|
||||
|
||||
group = DefineGroup('Filesystem', src, depend = ['RT_USING_DFS', 'RT_USING_DFS_JFFS2'], CPPPATH = CPPPATH)
|
||||
|
||||
Return('group')
|
11
components/dfs/filesystems/nfs/SConscript
Normal file
11
components/dfs/filesystems/nfs/SConscript
Normal file
@ -0,0 +1,11 @@
|
||||
# RT-Thread building script for component
|
||||
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
src = Glob('*.c')
|
||||
CPPPATH = [cwd]
|
||||
|
||||
group = DefineGroup('Filesystem', src, depend = ['RT_USING_DFS', 'RT_USING_DFS_NFS'], CPPPATH = CPPPATH)
|
||||
|
||||
Return('group')
|
@ -4,6 +4,6 @@ cwd = GetCurrentDir()
|
||||
src = Glob('*.c')
|
||||
CPPPATH = [cwd]
|
||||
|
||||
group = DefineGroup('Filesystem', src, depend = ['RT_USING_DFS', 'RT_USING_MEMHEAP'], CPPPATH = CPPPATH)
|
||||
group = DefineGroup('Filesystem', src, depend = ['RT_USING_DFS', 'RT_USING_MEMHEAP', 'RT_USING_DFS_RAMFS'], CPPPATH = CPPPATH)
|
||||
|
||||
Return('group')
|
||||
|
15
components/dfs/filesystems/romfs/SConscript
Normal file
15
components/dfs/filesystems/romfs/SConscript
Normal file
@ -0,0 +1,15 @@
|
||||
# RT-Thread building script for component
|
||||
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
src = Glob('*.c')
|
||||
CPPPATH = [cwd]
|
||||
|
||||
if GetDepend('DFS_ROMFS_ROOT'):
|
||||
# A new ROMFS root has been defined, we should remove the romfs.c
|
||||
SrcRemove(src, ['romfs.c'])
|
||||
|
||||
group = DefineGroup('Filesystem', src, depend = ['RT_USING_DFS','RT_USING_DFS_ROMFS'], CPPPATH = CPPPATH)
|
||||
|
||||
Return('group')
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* File : skeleton.c
|
||||
* This file is part of Device File System in RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2004-2011, RT-Thread Development Team
|
||||
* COPYRIGHT (C) 2004-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
|
||||
@ -100,3 +100,4 @@ int dfs_skt_init(void)
|
||||
dfs_register(&_skt_fs);
|
||||
return 0;
|
||||
}
|
||||
INIT_FS_EXPORT(dfs_skt_init);
|
||||
|
11
components/dfs/filesystems/uffs/SConscript
Normal file
11
components/dfs/filesystems/uffs/SConscript
Normal file
@ -0,0 +1,11 @@
|
||||
# RT-Thread building script for component
|
||||
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
src = Glob('*.c')
|
||||
CPPPATH = [cwd, cwd + '/src/inc']
|
||||
|
||||
group = DefineGroup('Filesystem', src, depend = ['RT_USING_DFS', 'RT_USING_DFS_UFFS'], CPPPATH = CPPPATH)
|
||||
|
||||
Return('group')
|
@ -623,7 +623,6 @@ int list_mod_detail(const char *name)
|
||||
return 0;
|
||||
}
|
||||
FINSH_FUNCTION_EXPORT(list_mod_detail, list module objects in system)
|
||||
MSH_CMD_EXPORT(list_mod_detail, list module objects in system)
|
||||
#endif
|
||||
|
||||
long list(void)
|
||||
|
@ -526,7 +526,8 @@ void finsh_thread_entry(void* parameter)
|
||||
else
|
||||
{
|
||||
shell->line[shell->line_position] = ch;
|
||||
rt_kprintf("%c", ch);
|
||||
if (shell->echo_mode)
|
||||
rt_kprintf("%c", ch);
|
||||
}
|
||||
|
||||
ch = 0;
|
||||
|
@ -1,14 +0,0 @@
|
||||
Import('rtconfig')
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
src = Glob('*.c')
|
||||
CPPPATH = [cwd]
|
||||
if rtconfig.CROSS_TOOL == 'keil':
|
||||
LINKFLAGS = ' --keep __rt_init* '
|
||||
else:
|
||||
LINKFLAGS = ''
|
||||
|
||||
group = DefineGroup('Components', src, depend = ['RT_USING_COMPONENTS_INIT'], CPPPATH = CPPPATH, LINKFLAGS = LINKFLAGS)
|
||||
|
||||
Return('group')
|
@ -1,177 +0,0 @@
|
||||
/*
|
||||
* File : components.c
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2012 - 2013, 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
|
||||
* 2012-09-20 Bernard Change the name to components.c
|
||||
* And all components related header files.
|
||||
* 2012-12-23 Bernard fix the pthread initialization issue.
|
||||
* 2013-06-23 Bernard Add the init_call for components initialization.
|
||||
* 2013-07-05 Bernard Remove initialization feature for MS VC++ compiler
|
||||
*/
|
||||
|
||||
#include "components.h"
|
||||
|
||||
static int rti_start(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
INIT_EXPORT(rti_start, "0");
|
||||
|
||||
static int rti_board_end(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
INIT_EXPORT(rti_board_end, "1.post");
|
||||
|
||||
static int rti_end(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
INIT_EXPORT(rti_end,"7");
|
||||
|
||||
/**
|
||||
* RT-Thread Components Initialization for board
|
||||
*/
|
||||
void rt_components_board_init(void)
|
||||
{
|
||||
#ifndef _MSC_VER
|
||||
#if RT_DEBUG_INIT
|
||||
int result;
|
||||
const struct rt_init_desc *desc;
|
||||
for (desc = &__rt_init_desc_rti_start; desc < &__rt_init_desc_rti_board_end; desc ++)
|
||||
{
|
||||
rt_kprintf("initialize %s", desc->fn_name);
|
||||
result = desc->fn();
|
||||
rt_kprintf(":%d done\n", result);
|
||||
}
|
||||
#else
|
||||
const init_fn_t *fn_ptr;
|
||||
|
||||
for (fn_ptr = &__rt_init_rti_start; fn_ptr < &__rt_init_rti_board_end; fn_ptr++)
|
||||
{
|
||||
(*fn_ptr)();
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* RT-Thread Components Initialization
|
||||
*/
|
||||
void rt_components_init(void)
|
||||
{
|
||||
#ifndef _MSC_VER
|
||||
#if RT_DEBUG_INIT
|
||||
int result;
|
||||
const struct rt_init_desc *desc;
|
||||
|
||||
rt_kprintf("do components intialization.\n");
|
||||
for (desc = &__rt_init_desc_rti_board_end; desc < &__rt_init_desc_rti_end; desc ++)
|
||||
{
|
||||
rt_kprintf("initialize %s", desc->fn_name);
|
||||
result = desc->fn();
|
||||
rt_kprintf(":%d done\n", result);
|
||||
}
|
||||
#else
|
||||
const init_fn_t *fn_ptr;
|
||||
|
||||
for (fn_ptr = &__rt_init_rti_board_end; fn_ptr < &__rt_init_rti_end; fn_ptr ++)
|
||||
{
|
||||
(*fn_ptr)();
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
#ifdef RT_USING_MODULE
|
||||
rt_system_module_init();
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_FINSH
|
||||
/* initialize finsh */
|
||||
finsh_system_init();
|
||||
finsh_set_device(RT_CONSOLE_DEVICE_NAME);
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_LWIP
|
||||
/* initialize lwip stack */
|
||||
/* register ethernetif device */
|
||||
eth_system_device_init();
|
||||
|
||||
/* initialize lwip system */
|
||||
lwip_system_init();
|
||||
rt_kprintf("TCP/IP initialized!\n");
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_DFS
|
||||
/* initialize the device file system */
|
||||
dfs_init();
|
||||
|
||||
#ifdef RT_USING_DFS_ELMFAT
|
||||
/* initialize the elm chan FatFS file system*/
|
||||
elm_init();
|
||||
#endif
|
||||
|
||||
#if defined(RT_USING_DFS_NFS) && defined(RT_USING_LWIP)
|
||||
/* initialize NFSv3 client file system */
|
||||
nfs_init();
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_DFS_YAFFS2
|
||||
dfs_yaffs2_init();
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_DFS_UFFS
|
||||
dfs_uffs_init();
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_DFS_JFFS2
|
||||
dfs_jffs2_init();
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_DFS_ROMFS
|
||||
dfs_romfs_init();
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_DFS_RAMFS
|
||||
dfs_ramfs_init();
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_DFS_DEVFS
|
||||
devfs_init();
|
||||
#endif
|
||||
#endif /* end of RT_USING_DFS */
|
||||
|
||||
#ifdef RT_USING_NEWLIB
|
||||
libc_system_init(RT_CONSOLE_DEVICE_NAME);
|
||||
#else
|
||||
/* the pthread system initialization will be initiallized in libc */
|
||||
#ifdef RT_USING_PTHREADS
|
||||
pthread_system_init();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_RTGUI
|
||||
rtgui_system_server_init();
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_USB_HOST
|
||||
rt_usb_host_init();
|
||||
#endif
|
||||
#endif
|
||||
}
|
@ -18,32 +18,38 @@
|
||||
|
||||
#endif
|
||||
|
||||
void libc_system_init(const char* tty_name)
|
||||
int libc_system_init(void)
|
||||
{
|
||||
#ifdef RT_USING_DFS
|
||||
int fd;
|
||||
int fd;
|
||||
struct rt_device *console_dev;
|
||||
|
||||
#ifndef RT_USING_DFS_DEVFS
|
||||
#error Please enable devfs by defining RT_USING_DFS_DEVFS in rtconfig.h
|
||||
#endif
|
||||
|
||||
/* initialize console device */
|
||||
rt_console_init(tty_name);
|
||||
console_dev = rt_console_get_device();
|
||||
if (console_dev)
|
||||
{
|
||||
/* initialize console device */
|
||||
rt_console_init(console_dev->parent.name);
|
||||
|
||||
/* open console as stdin/stdout/stderr */
|
||||
fd = open("/dev/console", O_RDONLY, 0); /* for stdin */
|
||||
fd = open("/dev/console", O_WRONLY, 0); /* for stdout */
|
||||
fd = open("/dev/console", O_WRONLY, 0); /* for stderr */
|
||||
|
||||
/* skip warning */
|
||||
fd = fd;
|
||||
/* open console as stdin/stdout/stderr */
|
||||
fd = open("/dev/console", O_RDONLY, 0); /* for stdin */
|
||||
fd = open("/dev/console", O_WRONLY, 0); /* for stdout */
|
||||
fd = open("/dev/console", O_WRONLY, 0); /* for stderr */
|
||||
|
||||
/* skip warning */
|
||||
fd = fd;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* set PATH and HOME */
|
||||
putenv("PATH=/");
|
||||
putenv("HOME=/");
|
||||
/* set PATH and HOME */
|
||||
putenv("PATH=/bin");
|
||||
putenv("HOME=/home");
|
||||
|
||||
#ifdef RT_USING_PTHREADS
|
||||
pthread_system_init();
|
||||
pthread_system_init();
|
||||
#endif
|
||||
}
|
||||
INIT_COMPONENT_EXPORT(libc_system_init);
|
||||
|
@ -3,15 +3,15 @@
|
||||
|
||||
#include <sys/time.h>
|
||||
|
||||
#define MILLISECOND_PER_SECOND 1000UL
|
||||
#define MICROSECOND_PER_SECOND 1000000UL
|
||||
#define NANOSECOND_PER_SECOND 1000000000UL
|
||||
#define MILLISECOND_PER_SECOND 1000UL
|
||||
#define MICROSECOND_PER_SECOND 1000000UL
|
||||
#define NANOSECOND_PER_SECOND 1000000000UL
|
||||
|
||||
#define MILLISECOND_PER_TICK (MILLISECOND_PER_SECOND / RT_TICK_PER_SECOND)
|
||||
#define MICROSECOND_PER_TICK (MICROSECOND_PER_SECOND / RT_TICK_PER_SECOND)
|
||||
#define NANOSECOND_PER_TICK (NANOSECOND_PER_SECOND / RT_TICK_PER_SECOND)
|
||||
#define MILLISECOND_PER_TICK (MILLISECOND_PER_SECOND / RT_TICK_PER_SECOND)
|
||||
#define MICROSECOND_PER_TICK (MICROSECOND_PER_SECOND / RT_TICK_PER_SECOND)
|
||||
#define NANOSECOND_PER_TICK (NANOSECOND_PER_SECOND / RT_TICK_PER_SECOND)
|
||||
|
||||
void libc_system_init(const char* tty_name);
|
||||
int libc_system_init(void);
|
||||
|
||||
/* some time related function */
|
||||
int libc_set_time(const struct timespec *time);
|
||||
|
@ -1,7 +1,8 @@
|
||||
/*
|
||||
* File : components_init.h
|
||||
* File : components.h
|
||||
* header for RT-Thread components
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2012, RT-Thread Development Team
|
||||
* COPYRIGHT (C) 2012-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
|
||||
@ -21,12 +22,12 @@
|
||||
* Date Author Notes
|
||||
* 2012-09-20 Bernard Change the name to components.h
|
||||
* And all components related header files.
|
||||
* 2015-02-06 Bernard Rename the components.h to rtcom.h
|
||||
* 2015-03-22 Bernard Keep the compatibility.
|
||||
*/
|
||||
|
||||
#ifndef __COMPONENTS_INIT_H__
|
||||
#define __COMPONENTS_INIT_H__
|
||||
|
||||
#include <rtthread.h>
|
||||
#ifndef COMPONENTS_H__
|
||||
#define COMPONENTS_H__
|
||||
|
||||
#ifdef RT_USING_FINSH
|
||||
#include <finsh.h>
|
||||
@ -36,7 +37,6 @@
|
||||
#ifdef RT_USING_LWIP
|
||||
#include <lwip/sys.h>
|
||||
#include <netif/ethernetif.h>
|
||||
extern void lwip_system_init(void);
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_DFS
|
||||
@ -68,9 +68,6 @@ extern void lwip_system_init(void);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_NEWLIB
|
||||
#include <libc.h>
|
||||
#endif
|
||||
#ifdef RT_USING_PTHREADS
|
||||
#include <pthread.h>
|
||||
#endif
|
||||
@ -79,27 +76,4 @@ extern void lwip_system_init(void);
|
||||
#include <rtm.h>
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_RTGUI
|
||||
#include <rtgui/rtgui_system.h>
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Initializes board routine in RT-Thread.
|
||||
*/
|
||||
void rt_components_board_init(void);
|
||||
|
||||
/**
|
||||
* Initializes components in RT-Thread
|
||||
* notes: this function must be invoked in Init Thread
|
||||
*/
|
||||
void rt_components_init(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
@ -437,6 +437,11 @@ void rt_module_unload_sethook(void (*hook)(rt_module_t module));
|
||||
void rt_module_init_object_container(struct rt_module *module);
|
||||
rt_err_t rt_module_destroy(rt_module_t module);
|
||||
|
||||
/*
|
||||
* application module system initialization
|
||||
*/
|
||||
int rt_system_module_init(void);
|
||||
|
||||
/*@}*/
|
||||
#endif
|
||||
|
||||
@ -455,10 +460,10 @@ void rt_interrupt_leave(void);
|
||||
*/
|
||||
rt_uint8_t rt_interrupt_get_nest(void);
|
||||
|
||||
/**
|
||||
* application module
|
||||
*/
|
||||
int rt_system_module_init(void);
|
||||
#ifdef RT_USING_COMPONENTS_INIT
|
||||
void rt_components_init(void);
|
||||
void rt_components_board_init(void);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @addtogroup KernelService
|
||||
|
@ -5,8 +5,13 @@ from building import *
|
||||
src = Glob('*.c')
|
||||
|
||||
CPPPATH = [RTT_ROOT + '/include']
|
||||
if rtconfig.CROSS_TOOL == 'keil' and GetDepend('RT_USING_MODULE') == True:
|
||||
LINKFLAGS = ' --keep __rtmsym_* '
|
||||
if rtconfig.CROSS_TOOL == 'keil':
|
||||
# add more link flags for module and components_init.
|
||||
LINKFLAGS = ''
|
||||
if GetDepend('RT_USING_MODULE'):
|
||||
LINKFLAGS = ' --keep __rtmsym_* '
|
||||
if GetDepend('RT_USING_COMPONENTS_INIT'):
|
||||
LINKFLAGS = ' --keep __rt_init* '
|
||||
else:
|
||||
LINKFLAGS = ''
|
||||
|
||||
|
216
src/init.c
Normal file
216
src/init.c
Normal file
@ -0,0 +1,216 @@
|
||||
/*
|
||||
* File : init.c
|
||||
* This file is part of RT-Thread RTOS
|
||||
* COPYRIGHT (C) 2012 - 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
|
||||
* 2012-09-20 Bernard Change the name to components.c
|
||||
* And all components related header files.
|
||||
* 2012-12-23 Bernard fix the pthread initialization issue.
|
||||
* 2013-06-23 Bernard Add the init_call for components initialization.
|
||||
* 2013-07-05 Bernard Remove initialization feature for MS VC++ compiler
|
||||
* 2015-02-06 Bernard Remove the MS VC++ support and move to the kernel
|
||||
*/
|
||||
|
||||
#include <rtthread.h>
|
||||
|
||||
#ifdef RT_USING_COMPONENTS_INIT
|
||||
/*
|
||||
* Components Initialization will initialize some driver and components as following
|
||||
* order:
|
||||
* rti_start --> 0
|
||||
* BOARD_EXPORT --> 1
|
||||
* rti_board_end --> 1.end
|
||||
*
|
||||
* DEVICE_EXPORT --> 2
|
||||
* COMPONENT_EXPORT --> 3
|
||||
* FS_EXPORT --> 4
|
||||
* ENV_EXPORT --> 5
|
||||
* APP_EXPORT --> 6
|
||||
*
|
||||
* rti_end --> 6.end
|
||||
*
|
||||
* These automatically initializaiton, the driver or component initial function must
|
||||
* be defined with:
|
||||
* INIT_BOARD_EXPORT(fn);
|
||||
* INIT_DEVICE_EXPORT(fn);
|
||||
* ...
|
||||
* INIT_APP_EXPORT(fn);
|
||||
* etc.
|
||||
*/
|
||||
static int rti_start(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
INIT_EXPORT(rti_start, "0");
|
||||
|
||||
static int rti_board_end(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
INIT_EXPORT(rti_board_end, "1.end");
|
||||
|
||||
static int rti_end(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
INIT_EXPORT(rti_end, "6.end");
|
||||
|
||||
/**
|
||||
* RT-Thread Components Initialization for board
|
||||
*/
|
||||
void rt_components_board_init(void)
|
||||
{
|
||||
#if RT_DEBUG_INIT
|
||||
int result;
|
||||
const struct rt_init_desc *desc;
|
||||
for (desc = &__rt_init_desc_rti_start; desc < &__rt_init_desc_rti_board_end; desc ++)
|
||||
{
|
||||
rt_kprintf("initialize %s", desc->fn_name);
|
||||
result = desc->fn();
|
||||
rt_kprintf(":%d done\n", result);
|
||||
}
|
||||
#else
|
||||
const init_fn_t *fn_ptr;
|
||||
|
||||
for (fn_ptr = &__rt_init_rti_start; fn_ptr < &__rt_init_rti_board_end; fn_ptr++)
|
||||
{
|
||||
(*fn_ptr)();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* RT-Thread Components Initialization
|
||||
*/
|
||||
void rt_components_init(void)
|
||||
{
|
||||
#if RT_DEBUG_INIT
|
||||
int result;
|
||||
const struct rt_init_desc *desc;
|
||||
|
||||
rt_kprintf("do components intialization.\n");
|
||||
for (desc = &__rt_init_desc_rti_board_end; desc < &__rt_init_desc_rti_end; desc ++)
|
||||
{
|
||||
rt_kprintf("initialize %s", desc->fn_name);
|
||||
result = desc->fn();
|
||||
rt_kprintf(":%d done\n", result);
|
||||
}
|
||||
#else
|
||||
const init_fn_t *fn_ptr;
|
||||
|
||||
for (fn_ptr = &__rt_init_rti_board_end; fn_ptr < &__rt_init_rti_end; fn_ptr ++)
|
||||
{
|
||||
(*fn_ptr)();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef RT_USING_USER_MAIN
|
||||
|
||||
void rt_application_init(void);
|
||||
void rt_hw_board_init(void);
|
||||
|
||||
#ifdef __CC_ARM
|
||||
extern int $Super$$main(void);
|
||||
/* re-define main function */
|
||||
int $Sub$$main(void)
|
||||
{
|
||||
rt_hw_interrupt_disable();
|
||||
rtthread_startup();
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef RT_USING_HEAP
|
||||
/* if there is not enble heap, we should use static thread and stack. */
|
||||
ALIGN(8)
|
||||
static rt_uint8_t main_stack[2048];
|
||||
struct rt_thread main_thread;
|
||||
#endif
|
||||
|
||||
/* the system main thread */
|
||||
void main_thread_entry(void *parameter)
|
||||
{
|
||||
extern int main(void);
|
||||
|
||||
/* RT-Thread components initialization */
|
||||
rt_components_init();
|
||||
|
||||
/* invoke system main function */
|
||||
#ifdef __CC_ARM
|
||||
$Sub$$main();
|
||||
#else
|
||||
main();
|
||||
#endif
|
||||
}
|
||||
|
||||
void rt_application_init(void)
|
||||
{
|
||||
rt_thread_t tid;
|
||||
|
||||
#ifdef RT_USING_HEAP
|
||||
tid = rt_thread_create("main", main_thread_entry, RT_NULL,
|
||||
2048, RT_THREAD_PRIORITY_MAX / 3, 20);
|
||||
RT_ASSERT(tid != RT_NULL);
|
||||
#else
|
||||
rt_err_t result;
|
||||
|
||||
tid = &main_thread;
|
||||
result = rt_thread_init(tid, "main", main_thread_entry, RT_NULL,
|
||||
2048, RT_THREAD_PRIORITY_MAX / 3, 20);
|
||||
RT_ASSERT(result != RT_EOK);
|
||||
#endif
|
||||
|
||||
rt_thread_startup(tid);
|
||||
}
|
||||
|
||||
int rtthread_startup(void)
|
||||
{
|
||||
/* board level initalization
|
||||
* NOTE: please initialize heap inside board initialization.
|
||||
*/
|
||||
rt_hw_board_init();
|
||||
|
||||
/* show RT-Thread version */
|
||||
rt_show_version();
|
||||
|
||||
/* timer system initialization */
|
||||
rt_system_timer_init();
|
||||
|
||||
/* scheduler system initialization */
|
||||
rt_system_scheduler_init();
|
||||
|
||||
/* create init_thread */
|
||||
rt_application_init();
|
||||
|
||||
/* timer thread initialization */
|
||||
rt_system_timer_thread_init();
|
||||
|
||||
/* idle thread initialization */
|
||||
rt_thread_idle_init();
|
||||
|
||||
/* start scheduler */
|
||||
rt_system_scheduler_start();
|
||||
|
||||
/* never reach here */
|
||||
return ;
|
||||
}
|
||||
#endif
|
||||
#endif
|
@ -595,6 +595,11 @@ def GlobSubDir(sub_dir, ext_name):
|
||||
dst.append(os.path.relpath(item, sub_dir))
|
||||
return dst
|
||||
|
||||
def PackageSConscript(package):
|
||||
from package import BuildPackage
|
||||
|
||||
return BuildPackage(package)
|
||||
|
||||
def file_path_exist(path, *args):
|
||||
return os.path.exists(os.path.join(path, *args))
|
||||
|
||||
|
74
tools/package.py
Normal file
74
tools/package.py
Normal file
@ -0,0 +1,74 @@
|
||||
#
|
||||
# File : package.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
|
||||
# 2015-04-10 Bernard First version
|
||||
#
|
||||
|
||||
# this script is used to build group with package.json instead of SConscript
|
||||
import os
|
||||
from building import *
|
||||
|
||||
def ExtendPackageVar(package, var):
|
||||
v = []
|
||||
if not package.has_key(var):
|
||||
return v
|
||||
|
||||
for item in package[var]:
|
||||
v = v + [item]
|
||||
|
||||
return v
|
||||
|
||||
def BuildPackage(package):
|
||||
import json
|
||||
f = file(package)
|
||||
package_json = f.read()
|
||||
|
||||
# get package.json path
|
||||
cwd = os.path.dirname(package)
|
||||
|
||||
package = json.loads(package_json)
|
||||
|
||||
# check package name
|
||||
if not package.has_key('name'):
|
||||
return []
|
||||
|
||||
# get depends
|
||||
depend = ExtendPackageVar(package, 'depends')
|
||||
|
||||
src = []
|
||||
if package.has_key('source_files'):
|
||||
for src_file in package['source_files']:
|
||||
src_file = os.path.join(cwd, src_file)
|
||||
src += Glob(src_file)
|
||||
|
||||
CPPPATH = []
|
||||
if package.has_key('CPPPATH'):
|
||||
for path in package['CPPPATH']:
|
||||
if path.startswith('/') and os.path.isdir(path):
|
||||
CPPPATH = CPPPATH + [path]
|
||||
else:
|
||||
CPPPATH = CPPPATH + [os.path.join(cwd, path)]
|
||||
|
||||
CPPDEFINES = ExtendPackageVar(package, 'CPPDEFINES')
|
||||
|
||||
objs = DefineGroup(package['name'], src, depend = depend, CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)
|
||||
|
||||
return objs
|
@ -40,7 +40,7 @@ SConscript_com = '''# RT-Thread building script for component
|
||||
from building import *
|
||||
|
||||
cwd = GetCurrentDir()
|
||||
src = Glob('*.c')
|
||||
src = Glob('*.c') + Glob('*.cpp')
|
||||
CPPPATH = [cwd]
|
||||
|
||||
group = DefineGroup('COMPONENT_NAME', src, depend = [''], CPPPATH = CPPPATH)
|
||||
|
Loading…
x
Reference in New Issue
Block a user