update makefile
[musl-tools.git] / maketagssrc.sh
blob9b3540b9154c784a57adb0d8ebd8ecf2216f4ab2
1 #!/bin/sh
3 export LC_ALL=C
4 MUSL=${MUSL:-../musl}
5 MUSL_PREFIX=${MUSL_PREFIX:-$MUSL}
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' .
13 awk -v src=$MUSL/src/ '
14 BEGIN {
15 FS="\t"
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
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