OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [scripts/] [checkkconfigsymbols.sh] - Blame information for rev 3

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 3 xianfeng
#!/bin/sh
2
# Find Kconfig variables used in source code but never defined in Kconfig
3
# Copyright (C) 2007, Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
4
 
5
# Tested with dash.
6
paths="$@"
7
[ -z "$paths" ] && paths=.
8
 
9
# Doing this once at the beginning saves a lot of time, on a cache-hot tree.
10
Kconfigs="`find . -name 'Kconfig' -o -name 'Kconfig*[^~]'`"
11
 
12
echo -e "File list \tundefined symbol used"
13
find $paths -name '*.[chS]' -o -name 'Makefile' -o -name 'Makefile*[^~]'| while read i
14
do
15
        # Output the bare Kconfig variable and the filename; the _MODULE part at
16
        # the end is not removed here (would need perl an not-hungry regexp for that).
17
        sed -ne 's!^.*\<\(UML_\)\?CONFIG_\([0-9A-Z_]\+\).*!\2 '$i'!p' < $i
18
done | \
19
# Smart "sort|uniq" implemented in awk and tuned to collect the names of all
20
# files which use a given symbol
21
awk '{map[$1, count[$1]++] = $2; }
22
END {
23
        for (combIdx in map) {
24
                split(combIdx, separate, SUBSEP);
25
                # The value may have been removed.
26
                if (! ( (separate[1], separate[2]) in map ) )
27
                        continue;
28
                symb=separate[1];
29
                printf "%s ", symb;
30
                #Use gawk extension to delete the names vector
31
                delete names;
32
                #Portably delete the names vector
33
                #split("", names);
34
                for (i=0; i < count[symb]; i++) {
35
                        names[map[symb, i]] = 1;
36
                        # Unfortunately, we may still encounter symb, i in the
37
                        # outside iteration.
38
                        delete map[symb, i];
39
                }
40
                i=0;
41
                for (name in names) {
42
                        if (i > 0)
43
                                printf ", %s", name;
44
                        else
45
                                printf "%s", name;
46
                        i++;
47
                }
48
                printf "\n";
49
        }
50
}' |
51
while read symb files; do
52
        # Remove the _MODULE suffix when checking the variable name. This should
53
        # be done only on tristate symbols, actually, but Kconfig parsing is
54
        # beyond the purpose of this script.
55
        symb_bare=`echo $symb | sed -e 's/_MODULE//'`
56
        if ! grep -q "\<$symb_bare\>" $Kconfigs; then
57
                echo -e "$files: \t$symb"
58
        fi
59
done|sort

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.