github.com/etecs-ru/go-sys-wineventlog@v0.0.0-20210227233244-4c3abb794018/unix/mkall.sh (about) 1 #!/usr/bin/env bash 2 # Copyright 2009 The Go Authors. All rights reserved. 3 # Use of this source code is governed by a BSD-style 4 # license that can be found in the LICENSE file. 5 6 # This script runs or (given -n) prints suggested commands to generate files for 7 # the Architecture/OS specified by the GOARCH and GOOS environment variables. 8 # See README.md for more information about how the build system works. 9 10 GOOSARCH="${GOOS}_${GOARCH}" 11 12 # defaults 13 mksyscall="go run mksyscall.go" 14 mkerrors="./mkerrors.sh" 15 zerrors="zerrors_$GOOSARCH.go" 16 mksysctl="" 17 zsysctl="zsysctl_$GOOSARCH.go" 18 mksysnum= 19 mktypes= 20 mkasm= 21 run="sh" 22 cmd="" 23 24 case "$1" in 25 -syscalls) 26 for i in zsyscall*go 27 do 28 # Run the command line that appears in the first line 29 # of the generated file to regenerate it. 30 sed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i 31 rm _$i 32 done 33 exit 0 34 ;; 35 -n) 36 run="cat" 37 cmd="echo" 38 shift 39 esac 40 41 case "$#" in 42 0) 43 ;; 44 *) 45 echo 'usage: mkall.sh [-n]' 1>&2 46 exit 2 47 esac 48 49 if [[ "$GOOS" = "linux" ]]; then 50 # Use the Docker-based build system 51 # Files generated through docker (use $cmd so you can Ctl-C the build or run) 52 $cmd docker build --tag generate:$GOOS $GOOS 53 $cmd docker run --interactive --tty --volume $(cd -- "$(dirname -- "$0")" && /bin/pwd):/build generate:$GOOS 54 exit 55 fi 56 57 GOOSARCH_in=syscall_$GOOSARCH.go 58 case "$GOOSARCH" in 59 _* | *_ | _) 60 echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2 61 exit 1 62 ;; 63 aix_ppc) 64 mkerrors="$mkerrors -maix32" 65 mksyscall="go run mksyscall_aix_ppc.go -aix" 66 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 67 ;; 68 aix_ppc64) 69 mkerrors="$mkerrors -maix64" 70 mksyscall="go run mksyscall_aix_ppc64.go -aix" 71 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 72 ;; 73 darwin_386) 74 mkerrors="$mkerrors -m32" 75 mksyscall="go run mksyscall.go -l32" 76 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 77 mkasm="go run mkasm_darwin.go" 78 ;; 79 darwin_amd64) 80 mkerrors="$mkerrors -m64" 81 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 82 mkasm="go run mkasm_darwin.go" 83 ;; 84 darwin_arm) 85 mkerrors="$mkerrors" 86 mksyscall="go run mksyscall.go -l32" 87 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 88 mkasm="go run mkasm_darwin.go" 89 ;; 90 darwin_arm64) 91 mkerrors="$mkerrors -m64" 92 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 93 mkasm="go run mkasm_darwin.go" 94 ;; 95 dragonfly_amd64) 96 mkerrors="$mkerrors -m64" 97 mksyscall="go run mksyscall.go -dragonfly" 98 mksysnum="go run mksysnum.go 'https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master'" 99 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 100 ;; 101 freebsd_386) 102 mkerrors="$mkerrors -m32" 103 mksyscall="go run mksyscall.go -l32" 104 mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" 105 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 106 ;; 107 freebsd_amd64) 108 mkerrors="$mkerrors -m64" 109 mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" 110 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 111 ;; 112 freebsd_arm) 113 mkerrors="$mkerrors" 114 mksyscall="go run mksyscall.go -l32 -arm" 115 mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" 116 # Let the type of C char be signed for making the bare syscall 117 # API consistent across platforms. 118 mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" 119 ;; 120 freebsd_arm64) 121 mkerrors="$mkerrors -m64" 122 mksysnum="go run mksysnum.go 'https://svn.freebsd.org/base/stable/11/sys/kern/syscalls.master'" 123 mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" 124 ;; 125 netbsd_386) 126 mkerrors="$mkerrors -m32" 127 mksyscall="go run mksyscall.go -l32 -netbsd" 128 mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" 129 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 130 ;; 131 netbsd_amd64) 132 mkerrors="$mkerrors -m64" 133 mksyscall="go run mksyscall.go -netbsd" 134 mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" 135 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 136 ;; 137 netbsd_arm) 138 mkerrors="$mkerrors" 139 mksyscall="go run mksyscall.go -l32 -netbsd -arm" 140 mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" 141 # Let the type of C char be signed for making the bare syscall 142 # API consistent across platforms. 143 mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" 144 ;; 145 netbsd_arm64) 146 mkerrors="$mkerrors -m64" 147 mksyscall="go run mksyscall.go -netbsd" 148 mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'" 149 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 150 ;; 151 openbsd_386) 152 mkerrors="$mkerrors -m32" 153 mksyscall="go run mksyscall.go -l32 -openbsd" 154 mksysctl="go run mksysctl_openbsd.go" 155 mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" 156 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 157 ;; 158 openbsd_amd64) 159 mkerrors="$mkerrors -m64" 160 mksyscall="go run mksyscall.go -openbsd" 161 mksysctl="go run mksysctl_openbsd.go" 162 mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" 163 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 164 ;; 165 openbsd_arm) 166 mkerrors="$mkerrors" 167 mksyscall="go run mksyscall.go -l32 -openbsd -arm" 168 mksysctl="go run mksysctl_openbsd.go" 169 mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" 170 # Let the type of C char be signed for making the bare syscall 171 # API consistent across platforms. 172 mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" 173 ;; 174 openbsd_arm64) 175 mkerrors="$mkerrors -m64" 176 mksyscall="go run mksyscall.go -openbsd" 177 mksysctl="go run mksysctl_openbsd.go" 178 mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" 179 # Let the type of C char be signed for making the bare syscall 180 # API consistent across platforms. 181 mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" 182 ;; 183 openbsd_mips64) 184 mkerrors="$mkerrors -m64" 185 mksyscall="go run mksyscall.go -openbsd" 186 mksysctl="go run mksysctl_openbsd.go" 187 mksysnum="go run mksysnum.go 'https://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master'" 188 # Let the type of C char be signed for making the bare syscall 189 # API consistent across platforms. 190 mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" 191 ;; 192 solaris_amd64) 193 mksyscall="go run mksyscall_solaris.go" 194 mkerrors="$mkerrors -m64" 195 mksysnum= 196 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 197 ;; 198 illumos_amd64) 199 mksyscall="go run mksyscall_solaris.go" 200 mkerrors= 201 mksysnum= 202 mktypes= 203 ;; 204 *) 205 echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2 206 exit 1 207 ;; 208 esac 209 210 ( 211 if [ -n "$mkerrors" ]; then echo "$mkerrors |gofmt >$zerrors"; fi 212 case "$GOOS" in 213 *) 214 syscall_goos="syscall_$GOOS.go" 215 case "$GOOS" in 216 darwin | dragonfly | freebsd | netbsd | openbsd) 217 syscall_goos="syscall_bsd.go $syscall_goos" 218 ;; 219 esac 220 if [ -n "$mksyscall" ]; then 221 if [ "$GOOSARCH" == "aix_ppc64" ]; then 222 # aix/ppc64 script generates files instead of writing to stdin. 223 echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in && gofmt -w zsyscall_$GOOSARCH.go && gofmt -w zsyscall_"$GOOSARCH"_gccgo.go && gofmt -w zsyscall_"$GOOSARCH"_gc.go " ; 224 elif [ "$GOOS" == "darwin" ]; then 225 # 1.12 and later, syscalls via libSystem 226 echo "$mksyscall -tags $GOOS,$GOARCH,go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; 227 # 1.13 and later, syscalls via libSystem (including syscallPtr) 228 echo "$mksyscall -tags $GOOS,$GOARCH,go1.13 syscall_darwin.1_13.go |gofmt >zsyscall_$GOOSARCH.1_13.go"; 229 elif [ "$GOOS" == "illumos" ]; then 230 # illumos code generation requires a --illumos switch 231 echo "$mksyscall -illumos -tags illumos,$GOARCH syscall_illumos.go |gofmt > zsyscall_illumos_$GOARCH.go"; 232 # illumos implies solaris, so solaris code generation is also required 233 echo "$mksyscall -tags solaris,$GOARCH syscall_solaris.go syscall_solaris_$GOARCH.go |gofmt >zsyscall_solaris_$GOARCH.go"; 234 else 235 echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; 236 fi 237 fi 238 esac 239 if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi 240 if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi 241 if [ -n "$mktypes" ]; then echo "$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go"; fi 242 if [ -n "$mkasm" ]; then echo "$mkasm $GOARCH"; fi 243 ) | $run