github.com/orangeji11/golang-sys-sw64@v0.0.0-20221228054527-b72799809e00/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 $(dirname "$(readlink -f "$0")"):/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="./mksyscall_aix_ppc.pl -aix" 66 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 67 ;; 68 aix_ppc64) 69 mkerrors="$mkerrors -maix64" 70 mksyscall="./mksyscall_aix_ppc64.pl -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 mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h" 77 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 78 mkasm="go run mkasm_darwin.go" 79 ;; 80 darwin_amd64) 81 mkerrors="$mkerrors -m64" 82 mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk macosx)/usr/include/sys/syscall.h" 83 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 84 mkasm="go run mkasm_darwin.go" 85 ;; 86 darwin_arm) 87 mkerrors="$mkerrors" 88 mksyscall="go run mksyscall.go -l32" 89 mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h" 90 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 91 mkasm="go run mkasm_darwin.go" 92 ;; 93 darwin_arm64) 94 mkerrors="$mkerrors -m64" 95 mksysnum="./mksysnum_darwin.pl $(xcrun --show-sdk-path --sdk iphoneos)/usr/include/sys/syscall.h" 96 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 97 mkasm="go run mkasm_darwin.go" 98 ;; 99 dragonfly_amd64) 100 mkerrors="$mkerrors -m64" 101 mksyscall="go run mksyscall.go -dragonfly" 102 mksysnum="curl -s 'http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master' | ./mksysnum_dragonfly.pl" 103 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 104 ;; 105 freebsd_386) 106 mkerrors="$mkerrors -m32" 107 mksyscall="go run mksyscall.go -l32" 108 mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl" 109 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 110 ;; 111 freebsd_amd64) 112 mkerrors="$mkerrors -m64" 113 mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl" 114 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 115 ;; 116 freebsd_arm) 117 mkerrors="$mkerrors" 118 mksyscall="go run mksyscall.go -l32 -arm" 119 mksysnum="curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl" 120 # Let the type of C char be signed for making the bare syscall 121 # API consistent across platforms. 122 mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" 123 ;; 124 netbsd_386) 125 mkerrors="$mkerrors -m32" 126 mksyscall="go run mksyscall.go -l32 -netbsd" 127 mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl" 128 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 129 ;; 130 netbsd_amd64) 131 mkerrors="$mkerrors -m64" 132 mksyscall="go run mksyscall.go -netbsd" 133 mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl" 134 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 135 ;; 136 netbsd_arm) 137 mkerrors="$mkerrors" 138 mksyscall="go run mksyscall.go -l32 -netbsd -arm" 139 mksysnum="curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl" 140 # Let the type of C char be signed for making the bare syscall 141 # API consistent across platforms. 142 mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" 143 ;; 144 openbsd_386) 145 mkerrors="$mkerrors -m32" 146 mksyscall="go run mksyscall.go -l32 -openbsd" 147 mksysctl="./mksysctl_openbsd.pl" 148 mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl" 149 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 150 ;; 151 openbsd_amd64) 152 mkerrors="$mkerrors -m64" 153 mksyscall="go run mksyscall.go -openbsd" 154 mksysctl="./mksysctl_openbsd.pl" 155 mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl" 156 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 157 ;; 158 openbsd_arm) 159 mkerrors="$mkerrors" 160 mksyscall="go run mksyscall.go -l32 -openbsd -arm" 161 mksysctl="./mksysctl_openbsd.pl" 162 mksysnum="curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl" 163 # Let the type of C char be signed for making the bare syscall 164 # API consistent across platforms. 165 mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char" 166 ;; 167 solaris_amd64) 168 mksyscall="./mksyscall_solaris.pl" 169 mkerrors="$mkerrors -m64" 170 mksysnum= 171 mktypes="GOARCH=$GOARCH go tool cgo -godefs" 172 ;; 173 *) 174 echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2 175 exit 1 176 ;; 177 esac 178 179 ( 180 if [ -n "$mkerrors" ]; then echo "$mkerrors |gofmt >$zerrors"; fi 181 case "$GOOS" in 182 *) 183 syscall_goos="syscall_$GOOS.go" 184 case "$GOOS" in 185 darwin | dragonfly | freebsd | netbsd | openbsd) 186 syscall_goos="syscall_bsd.go $syscall_goos" 187 ;; 188 esac 189 if [ -n "$mksyscall" ]; then 190 if [ "$GOOSARCH" == "aix_ppc64" ]; then 191 # aix/ppc64 script generates files instead of writing to stdin. 192 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 " ; 193 elif [ "$GOOS" == "darwin" ]; then 194 # pre-1.12, direct syscalls 195 echo "$mksyscall -tags $GOOS,$GOARCH,!go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.1_11.go"; 196 # 1.12 and later, syscalls via libSystem 197 echo "$mksyscall -tags $GOOS,$GOARCH,go1.12 $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; 198 else 199 echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go"; 200 fi 201 fi 202 esac 203 if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi 204 if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi 205 if [ -n "$mktypes" ]; then 206 echo "$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go"; 207 if [ -n "$mkasm" ]; then echo "$mkasm $GOARCH"; fi 208 fi 209 ) | $run