update makefile
[musl-tables] / maketagssrc.sh
1 #!/bin/sh
2
3 export LC_ALL=C
4 MUSL=${MUSL:-../musl}
5 MUSL_PREFIX=${MUSL_PREFIX:-$MUSL}
6
7 (
8         cd $MUSL/src
9 #       ctags -f /tmp/musl.tags -R -n -u --language-force=c --c-kinds=pxdstuf --fields=k --exclude='*.sh' --exclude='*o' --exclude='*.s' .
10         ctags -f /tmp/musl.tags -R -n -u --language-force=c --c-kinds=xtf --fields=k --exclude='*.sh' --exclude='*.o' --exclude='*.lo' --exclude='*.s' .
11 )
12
13 awk -v src=$MUSL/src/ '
14 BEGIN {
15         FS="\t"
16 }
17 function proto(t,f,n) {
18         if (t == "f" && n > 1)
19                 n--
20         cmd = "awk '\''NR==" n
21         if (t == "p")
22                 cmd = cmd "{s=$0; if(s!~/;/){getline; s=s \" \" $0} print s; exit}"
23         else if (t == "f") {
24                 cmd = cmd "{s=$0; sub(/^#.*/,\"\",s); sub(/^}/,\"\",s); gsub(/\\/\\/.*/,\"\",s); gsub(/.*\\*\\//,\"\",s);"
25                 cmd = cmd "while(s!~/{/){getline; s=s \" \" $0} sub(/ *{.*$/,\"\",s); print s; exit}"
26         } else if (t == "d")
27                 cmd = cmd "{s=$0; while(gsub(/\\\\$/,\"\",s)){getline; s=s $0} print s; exit}"
28         else
29                 return ""
30         cmd = cmd "'\'' " src f
31         cmd | getline s
32         close(cmd)
33         gsub(/\t/, " ", s)
34         gsub(/ +/, " ", s)
35         sub(/^ /,"",s)
36         return s
37 }
38 /^[^!]/ {
39         gsub(/[^0-9]*/,"",$3)
40         if ($4 == "s")
41                 $1 = "struct " $1
42         if ($4 == "u")
43                 $1 = "union " $1
44         p = proto($4,$2,$3)
45         if ($4 != "f" || p !~ /static/)
46                 print $1 "\t" $2 "\t" $4 "\t" $3 "\t" p
47 }' /tmp/musl.tags |sort >data/musl.src.tags
48 rm -f /tmp/musl.tags