source insight 查看 linux 内核,SourceInsight 精确导入Linux kernel源码的方法

#!/bin/sh

ARCH=arm

MACH=at91

FILE_IN=$1

FILE_OUT=$2

# .c

SOURCE_LIST=""

# generated file list

FILE_LIST=""

# nest depth for function get_includes()

NEST_DTPTH=0

# recursive function, used to get included files from files.

# result is stored in FILE_LIST

# $1 : file list, e.g. "fs/ext4/file.c fs/ext4/fsync.c"

get_includes()

{

local includes

local file

for file in $1

do

if [ ! -e ${file} ]; then

continue

fi

if echo "${FILE_LIST}" | grep -E ${file} > /dev/null; then

continue

fi

FILE_LIST="${FILE_LIST} ${file}"

NEST_DTPTH=$((NEST_DTPTH+1))

echo "

includes=$(                                                                                \

grep -E -H '^#include' ${file} |                                \

sed -r \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'\

-e 's@^.*@include/\1@'         \

-e 's@^.*@include/\1@'         \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'         \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'         \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'         \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'         \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'                 \

-e 's@^.*@include/\1@'                 \

-e "s@^.*@arch/${ARCH}/include/\1 arch/${ARCH}/include/generated/\1@"        \

-e "s@^.*@arch/${ARCH}/mach-${MACH}/include/\1@"        \

-e 's@(^.*/)[^/]+\.c.*\"(.*)\"@\1\2@'         \

-e 's@/\*.*@@'                                                         \

-e 's@^.*\#include.*$@@'                                  \

-e 's@^@ @' |                                                        \

sort |                                                                                 \

uniq |                                                                                \

tr -d '\n' |                                                                 \

tr -d '\r'                                                                        \

)

if [ -n "${includes}" ]; then

get_includes "${includes}"

fi

echo ">${NEST_DTPTH}) : ${file}"

NEST_DTPTH=$((NEST_DTPTH-1))

done

}

# get *.c from kernel build log

SOURCE_LIST=$(                                                \

grep -E '^\s*CC' ${FILE_IN} |        \

sed -r                                                         \

-e 's/^\s*CC\s*/ /'                        \

-e 's/\.o/\.c/'                        |        \

tr -d '\n' |                                         \

tr -d '\r'                                                \

)

echo ${SOURCE_LIST}

get_includes "${SOURCE_LIST}"

FILE_LIST=$(echo "${FILE_LIST}" | sed -r -e 's/\s/\r\n/g' )

echo "${FILE_LIST}" > ${FILE_OUT}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值