]> git.proxmox.com Git - ceph.git/blob - ceph/src/seastar/dpdk/devtools/build-tags.sh
import 15.2.0 Octopus source
[ceph.git] / ceph / src / seastar / dpdk / 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 "Valid configs are:"
23 make showconfigs | sed 's,^,\t,'
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/librte_eal/linux" '*.[chS]'
71 }
72
73 bsd_sources()
74 {
75 find_sources "lib/librte_eal/freebsd" '*.[chS]'
76 }
77
78 arm_common()
79 {
80 find_sources "lib/librte_eal/common/arch/arm" '*.[chS]'
81 find_sources "$source_dirs" '*neon*.[chS]'
82 }
83
84 arm_32_sources()
85 {
86 arm_common
87 find_sources "lib/librte_eal/common/include/arch/arm" '*.[chS]' \
88 "$skip_64b_files"
89 }
90
91 arm_64_sources()
92 {
93 arm_common
94 find_sources "lib/librte_eal/common/include/arch/arm" '*.[chS]' \
95 "$skip_32b_files"
96 find_sources "$source_dirs" '*arm64.[chS]'
97 }
98
99 x86_common()
100 {
101 find_sources "lib/librte_eal/common/arch/x86" '*.[chS]'
102
103 find_sources "examples/performance-thread/common/arch/x86" '*.[chS]'
104 find_sources "$source_dirs" '*_sse*.[chS]'
105 find_sources "$source_dirs" '*_avx*.[chS]'
106 find_sources "$source_dirs" '*x86.[chS]'
107 }
108
109 x86_32_sources()
110 {
111 x86_common
112 find_sources "lib/librte_eal/common/include/arch/x86" '*.[chS]' \
113 "$skip_64b_files"
114 }
115
116 x86_64_sources()
117 {
118 x86_common
119 find_sources "lib/librte_eal/common/include/arch/x86" '*.[chS]' \
120 "$skip_32b_files"
121 }
122
123 ppc_64_sources()
124 {
125 find_sources "lib/librte_eal/common/arch/ppc_64" '*.[chS]'
126 find_sources "lib/librte_eal/common/include/arch/ppc_64" '*.[chS]'
127 find_sources "$source_dirs" '*altivec*.[chS]'
128 }
129
130 check_valid_target()
131 {
132 if [ ! -f "config/defconfig_$1" ] ; then
133 echo "Invalid config: $1"
134 print_usage
135 exit 0
136 fi
137 }
138
139 if [ -n "$2" ]; then
140 check_valid_target $2
141
142 echo $2 | grep -q "linux" || linux=false
143 echo $2 | grep -q "bsd" || bsd=false
144 echo $2 | grep -q "x86_64-" || x86_64=false
145 echo $2 | grep -q "arm-" || arm_32=false
146 echo $2 | grep -q "arm64-" || arm_64=false
147 echo $2 | grep -q "ppc_64-" || ppc_64=false
148 echo $2 | grep -q -e "i686-" -e "x32-" || x86_32=false
149 fi
150
151 all_sources()
152 {
153 common_sources
154 if $linux ; then linux_sources ; fi
155 if $bsd ; then bsd_sources ; fi
156 if $x86_64 ; then x86_64_sources ; fi
157 if $x86_32 ; then x86_32_sources ; fi
158 if $ppc_64 ; then ppc_64_sources ; fi
159 if $arm_32 ; then arm_32_sources ; fi
160 if $arm_64 ; then arm_64_sources ; fi
161 }
162
163 show_flags()
164 {
165 if $verbose ; then
166 echo "mode: $1"
167 echo "config: $2"
168 echo "linux: $linux"
169 echo "bsd: $bsd"
170 echo "x86_32: $x86_32"
171 echo "x86_64: $x86_64"
172 echo "ppc_64: $ppc_64"
173 echo "arm_32: $arm_32"
174 echo "arm_64: $arm_64"
175 fi
176 }
177
178 case "$1" in
179 "cscope")
180 show_flags $1 $2
181 all_sources > cscope.files
182 cscope -q -b -f cscope.out
183 ;;
184 "gtags")
185 show_flags $1 $2
186 all_sources | gtags -i -f -
187 ;;
188 "tags")
189 show_flags $1 $2
190 rm -f tags
191 all_sources | xargs ctags -a
192 ;;
193 "etags")
194 show_flags $1 $2
195 rm -f TAGS
196 all_sources | xargs etags -a
197 ;;
198 *)
199 echo "Invalid mode: $1"
200 print_usage
201 ;;
202 esac