62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
|
#
|
||
|
# File : cscope.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-01-20 Bernard Add copyright information
|
||
|
#
|
||
|
|
||
|
import os
|
||
|
|
||
|
def _get_src(project):
|
||
|
li = []
|
||
|
for group in project:
|
||
|
for f in group['src']:
|
||
|
li.append(os.path.normpath(f.rfile().abspath))
|
||
|
return li
|
||
|
|
||
|
def _get_header_dir(dirp):
|
||
|
li = []
|
||
|
for root, dirs, files in os.walk(dirp):
|
||
|
for d in dirs:
|
||
|
fpath = os.path.join(root, d)
|
||
|
li.extend(_get_header_dir(fpath))
|
||
|
|
||
|
for f in files:
|
||
|
if f[-2:] == '.h':
|
||
|
fpath = os.path.join(root, f)
|
||
|
li.append(os.path.normpath(fpath))
|
||
|
return li
|
||
|
|
||
|
def _get_header(project):
|
||
|
li = []
|
||
|
for g in project:
|
||
|
for d in g.get('CPPPATH', []):
|
||
|
li.extend(_get_header_dir(d))
|
||
|
return li
|
||
|
|
||
|
def CscopeDatabase(project):
|
||
|
files = set(_get_src(project) + _get_header(project))
|
||
|
with open('cscope.files', 'w') as db:
|
||
|
db.write('-k\n-q\n')
|
||
|
db.write('\n'.join(files))
|
||
|
db.flush() # let cscope see the full content
|
||
|
os.system('cscope -b')
|
||
|
|