annotate libgo/match.sh @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 #!/bin/sh
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 # Copyright 2016 The Go Authors. All rights reserved.
kono
parents:
diff changeset
4 # Use of this source code is governed by a BSD-style
kono
parents:
diff changeset
5 # license that can be found in the LICENSE file.
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 # Given a source directory, returns the non-test Go files that should
kono
parents:
diff changeset
8 # be built for this target. This implements Go's build constraints in
kono
parents:
diff changeset
9 # a shell script. There is similar code in testsuite/gotest.
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 set -e
kono
parents:
diff changeset
12
kono
parents:
diff changeset
13 LANG=C
kono
parents:
diff changeset
14 LC_ALL=C
kono
parents:
diff changeset
15 LC_CTYPE=C
kono
parents:
diff changeset
16 export LANG LC_ALL LC_CTYPE
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 srcdir=""
kono
parents:
diff changeset
19 goarch=""
kono
parents:
diff changeset
20 goos=""
kono
parents:
diff changeset
21 extrafiles=""
kono
parents:
diff changeset
22 cmdlinetag="nosuchtag"
kono
parents:
diff changeset
23 cgotag="cgo"
kono
parents:
diff changeset
24
kono
parents:
diff changeset
25 for arg; do
kono
parents:
diff changeset
26 case "x$arg" in
kono
parents:
diff changeset
27 x--srcdir)
kono
parents:
diff changeset
28 srcdir=$2
kono
parents:
diff changeset
29 shift
kono
parents:
diff changeset
30 shift
kono
parents:
diff changeset
31 ;;
kono
parents:
diff changeset
32 x--srcdir=*)
kono
parents:
diff changeset
33 srcdir=`echo $1 | sed -e 's/^--srcdir=//'`
kono
parents:
diff changeset
34 shift
kono
parents:
diff changeset
35 ;;
kono
parents:
diff changeset
36 x--goarch)
kono
parents:
diff changeset
37 goarch=$2
kono
parents:
diff changeset
38 shift
kono
parents:
diff changeset
39 shift
kono
parents:
diff changeset
40 ;;
kono
parents:
diff changeset
41 x--goarch=*)
kono
parents:
diff changeset
42 goarch=`echo $1 | sed -e 's/^--goarch=//'`
kono
parents:
diff changeset
43 shift
kono
parents:
diff changeset
44 ;;
kono
parents:
diff changeset
45 x--goos)
kono
parents:
diff changeset
46 goos=$2
kono
parents:
diff changeset
47 shift
kono
parents:
diff changeset
48 shift
kono
parents:
diff changeset
49 ;;
kono
parents:
diff changeset
50 x--goos=*)
kono
parents:
diff changeset
51 goos=`echo $1 | sed -e 's/^--goos=//'`
kono
parents:
diff changeset
52 shift
kono
parents:
diff changeset
53 ;;
kono
parents:
diff changeset
54 x--extrafiles)
kono
parents:
diff changeset
55 extrafiles=$2
kono
parents:
diff changeset
56 shift
kono
parents:
diff changeset
57 shift
kono
parents:
diff changeset
58 ;;
kono
parents:
diff changeset
59 x--extrafiles=*)
kono
parents:
diff changeset
60 extrafiles=`echo $1 | sed -e 's/^--extrafiles=//'`
kono
parents:
diff changeset
61 shift
kono
parents:
diff changeset
62 ;;
kono
parents:
diff changeset
63 x--tag)
kono
parents:
diff changeset
64 cmdlinetag=$2
kono
parents:
diff changeset
65 shift
kono
parents:
diff changeset
66 shift
kono
parents:
diff changeset
67 ;;
kono
parents:
diff changeset
68 x--tag=*)
kono
parents:
diff changeset
69 cmdlinetag=`echo $1 | sed -e 's/^--tag=//'`
kono
parents:
diff changeset
70 shift
kono
parents:
diff changeset
71 ;;
kono
parents:
diff changeset
72 x--nocgo)
kono
parents:
diff changeset
73 cgotag="nosuchtag"
kono
parents:
diff changeset
74 shift
kono
parents:
diff changeset
75 ;;
kono
parents:
diff changeset
76 *)
kono
parents:
diff changeset
77 echo 1>&2 "unknown argument $arg"
kono
parents:
diff changeset
78 exit 1
kono
parents:
diff changeset
79 ;;
kono
parents:
diff changeset
80 esac
kono
parents:
diff changeset
81 done
kono
parents:
diff changeset
82
kono
parents:
diff changeset
83 cd $srcdir
kono
parents:
diff changeset
84
kono
parents:
diff changeset
85 gofiles=
kono
parents:
diff changeset
86 for f in *.go; do
kono
parents:
diff changeset
87 case $f in
kono
parents:
diff changeset
88 *_test.go)
kono
parents:
diff changeset
89 ;;
kono
parents:
diff changeset
90 *.go)
kono
parents:
diff changeset
91 gofiles="$gofiles $f"
kono
parents:
diff changeset
92 ;;
kono
parents:
diff changeset
93 esac
kono
parents:
diff changeset
94 done
kono
parents:
diff changeset
95
kono
parents:
diff changeset
96 if test "$gofiles" = ""; then
kono
parents:
diff changeset
97 echo 1>&2 "no non-test .go files in $srcdir"
kono
parents:
diff changeset
98 exit 1
kono
parents:
diff changeset
99 fi
kono
parents:
diff changeset
100
kono
parents:
diff changeset
101 matched=
kono
parents:
diff changeset
102 for f in $gofiles; do
kono
parents:
diff changeset
103 tag1=`echo $f | sed -e 's/^.*_\([^_]*\).go$/\1/'`
kono
parents:
diff changeset
104 tag2=`echo $f | sed -e 's/^.*_\([^_]*\)_[^_]*.go$/\1/'`
kono
parents:
diff changeset
105 if test x$tag1 = x$f; then
kono
parents:
diff changeset
106 tag1=
kono
parents:
diff changeset
107 fi
kono
parents:
diff changeset
108 if test x$tag2 = x$f; then
kono
parents:
diff changeset
109 tag2=
kono
parents:
diff changeset
110 fi
kono
parents:
diff changeset
111
kono
parents:
diff changeset
112 case "$tag1" in
kono
parents:
diff changeset
113 "") ;;
kono
parents:
diff changeset
114 $goarch) ;;
kono
parents:
diff changeset
115 $goos) ;;
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
116 aix | android | darwin | dragonfly | freebsd | illumos | hurd | js | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
111
kono
parents:
diff changeset
117 tag1=nonmatchingtag
kono
parents:
diff changeset
118 ;;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
119 386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le | nios2 | ppc | ppc64 | ppc64le | riscv64 | s390 | s390x | sh | shbe | sparc | sparc64 | wasm)
111
kono
parents:
diff changeset
120 tag1=nonmatchingtag
kono
parents:
diff changeset
121 ;;
kono
parents:
diff changeset
122 esac
kono
parents:
diff changeset
123
kono
parents:
diff changeset
124 case "$tag2" in
kono
parents:
diff changeset
125 "") ;;
kono
parents:
diff changeset
126 $goarch) ;;
kono
parents:
diff changeset
127 $goos) ;;
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
128 aix | android | darwin | dragonfly | freebsd | hurd | illumos | js | linux | nacl | netbsd | openbsd | plan9 | solaris | windows)
111
kono
parents:
diff changeset
129 tag2=nonmatchingtag
kono
parents:
diff changeset
130 ;;
131
84e7813d76e9 gcc-8.2
mir3636
parents: 111
diff changeset
131 386 | amd64 | amd64p32 | arm | armbe | arm64 | arm64be | alpha | ia64 | m68k | mips | mipsle | mips64 | mips64le | mips64p32 | mips64p32le | nios2 | ppc | ppc64 | ppc64le | riscv64 | s390 | s390x | sh | shbe | sparc | sparc64 | wasm)
111
kono
parents:
diff changeset
132 tag2=nonmatchingtag
kono
parents:
diff changeset
133 ;;
kono
parents:
diff changeset
134 esac
kono
parents:
diff changeset
135
kono
parents:
diff changeset
136 if test x$tag1 != xnonmatchingtag -a x$tag2 != xnonmatchingtag; then
kono
parents:
diff changeset
137 # Pipe through cat so that `set -e` doesn't affect fgrep.
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
138 tags=`sed '/^package /q' < $f | grep '^// *+build ' | cat`
111
kono
parents:
diff changeset
139 omatch=true
kono
parents:
diff changeset
140 first=true
kono
parents:
diff changeset
141 match=false
kono
parents:
diff changeset
142 for tag in $tags; do
kono
parents:
diff changeset
143 case $tag in
kono
parents:
diff changeset
144 "//")
kono
parents:
diff changeset
145 ;;
145
1830386684a0 gcc-9.2.0
anatofuz
parents: 131
diff changeset
146 "+build" | "//+build")
111
kono
parents:
diff changeset
147 if test "$first" = "true"; then
kono
parents:
diff changeset
148 first=false
kono
parents:
diff changeset
149 elif test "$match" = "false"; then
kono
parents:
diff changeset
150 omatch=false
kono
parents:
diff changeset
151 fi
kono
parents:
diff changeset
152 match=false
kono
parents:
diff changeset
153 ;;
kono
parents:
diff changeset
154 $goos | $goarch | $cgotag | $cmdlinetag | "gccgo" | go1.[0-9])
kono
parents:
diff changeset
155 match=true
kono
parents:
diff changeset
156 ;;
kono
parents:
diff changeset
157 "!"$goos | "!"$goarch | "!"$cgotag | "!"$cmdlinetag | "!gccgo" | "!"go1.[0-9])
kono
parents:
diff changeset
158 ;;
kono
parents:
diff changeset
159 *,*)
kono
parents:
diff changeset
160 cmatch=true
kono
parents:
diff changeset
161 for ctag in `echo $tag | sed -e 's/,/ /g'`; do
kono
parents:
diff changeset
162 case $ctag in
kono
parents:
diff changeset
163 $goos | $goarch | $cgotag | $cmdlinetag | "gccgo" | go1.[0-9])
kono
parents:
diff changeset
164 ;;
kono
parents:
diff changeset
165 "!"$goos | "!"$goarch | "!"$cgotag | "!"$cmdlinetag | "!gccgo" | "!"go1.[0-9])
kono
parents:
diff changeset
166 cmatch=false
kono
parents:
diff changeset
167 ;;
kono
parents:
diff changeset
168 "!"*)
kono
parents:
diff changeset
169 ;;
kono
parents:
diff changeset
170 *)
kono
parents:
diff changeset
171 cmatch=false
kono
parents:
diff changeset
172 ;;
kono
parents:
diff changeset
173 esac
kono
parents:
diff changeset
174 done
kono
parents:
diff changeset
175 if test "$cmatch" = "true"; then
kono
parents:
diff changeset
176 match=true
kono
parents:
diff changeset
177 fi
kono
parents:
diff changeset
178 ;;
kono
parents:
diff changeset
179 "!"*)
kono
parents:
diff changeset
180 match=true
kono
parents:
diff changeset
181 ;;
kono
parents:
diff changeset
182 esac
kono
parents:
diff changeset
183 done
kono
parents:
diff changeset
184
kono
parents:
diff changeset
185 if test "$match" = "false" -a "$first" = "false"; then
kono
parents:
diff changeset
186 omatch=false
kono
parents:
diff changeset
187 fi
kono
parents:
diff changeset
188
kono
parents:
diff changeset
189 if test "$omatch" = "true"; then
kono
parents:
diff changeset
190 matched="$matched $srcdir/$f"
kono
parents:
diff changeset
191 fi
kono
parents:
diff changeset
192 fi
kono
parents:
diff changeset
193 done
kono
parents:
diff changeset
194
kono
parents:
diff changeset
195 echo $matched $extrafiles
kono
parents:
diff changeset
196
kono
parents:
diff changeset
197 exit 0