build: replace meson OS detection with variable
[dpdk.git] / buildtools / map-list-symbol.sh
1 #!/bin/sh
2 # SPDX-License-Identifier: BSD-3-Clause
3 # Copyright(c) 2018 David Marchand <david.marchand@redhat.com>
4
5 section=all
6 symbol=all
7 quiet=
8
9 while getopts 'S:s:q' name; do
10         case $name in
11         S)
12                 [ $section = 'all' ] || {
13                         echo 'Cannot list in multiple sections'
14                         exit 1
15                 }
16                 section=$OPTARG
17         ;;
18         s)
19                 [ $symbol = 'all' ] || {
20                         echo 'Cannot list multiple symbols'
21                         exit 1
22                 }
23                 symbol=$OPTARG
24         ;;
25         q)
26                 quiet='y'
27         ;;
28         ?)
29                 echo 'usage: $0 [-S section] [-s symbol] [-q]'
30                 exit 1
31         ;;
32         esac
33 done
34
35 shift $(($OPTIND - 1))
36
37 for file in $@; do
38         cat "$file" |awk '
39         BEGIN {
40                 current_section = "";
41                 if ("'$section'" == "all" && "'$symbol'" == "all") {
42                         ret = 0;
43                 } else {
44                         ret = 1;
45                 }
46         }
47         /^.*{/ {
48                 if ("'$section'" == "all" || $1 == "'$section'") {
49                         current_section = $1;
50                 }
51         }
52         /.*}/ { current_section = ""; }
53         /^[^}].*[^:*];/ {
54                 if (current_section != "") {
55                         gsub(";","");
56                         if ("'$symbol'" == "all" || $1 == "'$symbol'") {
57                                 ret = 0;
58                                 if ("'$quiet'" == "") {
59                                         print "'$file' "current_section" "$1;
60                                 }
61                                 if ("'$symbol'" != "all") {
62                                         exit 0;
63                                 }
64                         }
65                 }
66         }
67         END {
68                 exit ret;
69         }'
70 done