net/virtio: unmap PCI device in secondary process
[dpdk.git] / devtools / build-tags.sh
1 #!/bin/sh -e
2 # SPDX-License-Identifier: BSD-3-Clause
3 # Copyright(c) 2017 Cavium, Inc
4 #
5
6 #
7 # Generate tags or gtags or cscope or etags files
8 #
9
10 verbose=false
11 linux=true
12 bsd=true
13 x86_32=true
14 x86_64=true
15 ppc_64=true
16 arm_32=true
17 arm_64=true
18
19 print_usage()
20 {
21         echo "Usage: $(basename $0) [-h] [-v] tags|cscope|gtags|etags [config]"
22         echo "Examples of valid configs are: "
23         echo "x86_64-bsd, arm64-linux, ppc_64-linux"
24 }
25
26 # Move to the root of the git tree
27 cd $(dirname $0)/..
28
29 while getopts hv ARG ; do
30         case $ARG in
31                 v ) verbose=true ;;
32                 h ) print_usage; exit 0 ;;
33                 ? ) print_usage; exit 1 ;;
34         esac
35 done
36 shift $(($OPTIND - 1))
37
38 #ignore version control files
39 ignore="( -name .svn -o -name CVS -o -name .hg -o -name .git ) -prune -o"
40
41 source_dirs="app buildtools drivers examples lib"
42
43 skip_bsd="( -name freebsd ) -prune -o"
44 skip_linux="( -name linux ) -prune -o"
45 skip_arch="( -name arch ) -prune -o"
46 skip_sse="( -name *_sse*.[chS] ) -prune -o"
47 skip_avx="( -name *_avx*.[chS] ) -prune -o"
48 skip_neon="( -name *_neon*.[chS] ) -prune -o"
49 skip_altivec="( -name *_altivec*.[chS] ) -prune -o"
50 skip_arm64="( -name *arm64*.[chS] ) -prune -o"
51 skip_x86="( -name *x86*.[chS] ) -prune -o"
52 skip_32b_files="( -name *_32.h ) -prune -o"
53 skip_64b_files="( -name *_64.h ) -prune -o"
54
55 skiplist="$skip_bsd $skip_linux $skip_arch $skip_sse $skip_avx \
56                  $skip_neon $skip_altivec $skip_x86 $skip_arm64"
57
58 find_sources()
59 {
60         find $1 $ignore $3 -name $2 -not -type l -print
61 }
62
63 common_sources()
64 {
65         find_sources "$source_dirs" '*.[chS]' "$skiplist"
66 }
67
68 linux_sources()
69 {
70         find_sources "lib/eal/linux" '*.[chS]'
71         find_sources "kernel/linux" '*.[chS]'
72 }
73
74 bsd_sources()
75 {
76         find_sources "lib/eal/freebsd" '*.[chS]'
77         find_sources "kernel/freebsd" '*.[chS]'
78 }
79
80 arm_common()
81 {
82         find_sources "$source_dirs" '*neon*.[chS]'
83 }
84
85 arm_32_sources()
86 {
87         arm_common
88         find_sources "lib/eal/arm" '*.[chS]' \
89                                         "$skip_64b_files"
90 }
91
92 arm_64_sources()
93 {
94         arm_common
95         find_sources "lib/eal/arm" '*.[chS]' \
96                                          "$skip_32b_files"
97         find_sources "$source_dirs" '*arm64.[chS]'
98 }
99
100 x86_common()
101 {
102         find_sources "$source_dirs" '*_sse*.[chS]'
103         find_sources "$source_dirs" '*_avx*.[chS]'
104         find_sources "$source_dirs" '*x86.[chS]'
105 }
106
107 x86_32_sources()
108 {
109         x86_common
110         find_sources "lib/eal/x86" '*.[chS]' \
111                                         "$skip_64b_files"
112 }
113
114 x86_64_sources()
115 {
116         x86_common
117         find_sources "lib/eal/x86" '*.[chS]' \
118                                         "$skip_32b_files"
119 }
120
121 ppc_64_sources()
122 {
123         find_sources "lib/eal/ppc" '*.[chS]'
124         find_sources "$source_dirs" '*altivec*.[chS]'
125 }
126
127 if [ -n "$2" ]; then
128         echo $2 | grep -q "linux" || linux=false
129         echo $2 | grep -q "bsd" || bsd=false
130         echo $2 | grep -q "x86_64-" || x86_64=false
131         echo $2 | grep -q "arm-" || arm_32=false
132         echo $2 | grep -q "arm64-" || arm_64=false
133         echo $2 | grep -q "ppc_64-" || ppc_64=false
134         echo $2 | grep -q -e "i686-" -e "x32-" || x86_32=false
135 fi
136
137 all_sources()
138 {
139         common_sources
140         if $linux ; then linux_sources ; fi
141         if $bsd ; then bsd_sources ; fi
142         if $x86_64 ; then x86_64_sources ; fi
143         if $x86_32 ; then x86_32_sources ; fi
144         if $ppc_64 ; then ppc_64_sources ; fi
145         if $arm_32 ; then arm_32_sources ; fi
146         if $arm_64 ; then arm_64_sources ; fi
147 }
148
149 show_flags()
150 {
151         if $verbose ; then
152                 echo "mode:     $1"
153                 echo "config:   $2"
154                 echo "linux:    $linux"
155                 echo "bsd:      $bsd"
156                 echo "x86_32:   $x86_32"
157                 echo "x86_64:   $x86_64"
158                 echo "ppc_64:   $ppc_64"
159                 echo "arm_32:   $arm_32"
160                 echo "arm_64:   $arm_64"
161         fi
162 }
163
164 case "$1" in
165         "cscope")
166                 show_flags $1 $2
167                 all_sources > cscope.files
168                 cscope -q -b -f cscope.out
169                 ;;
170         "gtags")
171                 show_flags $1 $2
172                 all_sources | gtags -i -f -
173                 ;;
174         "tags")
175                 show_flags $1 $2
176                 rm -f tags
177                 all_sources | xargs ctags -a
178                 ;;
179         "etags")
180                 show_flags $1 $2
181                 rm -f TAGS
182                 all_sources | xargs etags -a
183                 ;;
184         *)
185                 echo "Invalid mode: $1"
186                 print_usage
187                 ;;
188 esac