2018-09-30 18:02:42 -07:00
#!/usr/bin/env bash
# Copyright 2009 The Go Authors. All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.
# This script runs or (given -n) prints suggested commands to generate files for
# the Architecture/OS specified by the GOARCH and GOOS environment variables.
# See README.md for more information about how the build system works.
GOOSARCH = " ${ GOOS } _ ${ GOARCH } "
# defaults
2019-10-24 19:55:06 -04:00
mksyscall = "./mksyscall.pl"
2018-09-30 18:02:42 -07:00
mkerrors = "./mkerrors.sh"
zerrors = " zerrors_ $GOOSARCH .go "
mksysctl = ""
zsysctl = " zsysctl_ $GOOSARCH .go "
mksysnum =
mktypes =
run = "sh"
cmd = ""
case " $1 " in
-syscalls)
for i in zsyscall*go
do
# Run the command line that appears in the first line
# of the generated file to regenerate it.
sed 1q $i | sed 's;^// ;;' | sh > _$i && gofmt < _$i > $i
rm _$i
done
exit 0
; ;
-n)
run = "cat"
cmd = "echo"
shift
esac
case " $# " in
0)
; ;
*)
echo 'usage: mkall.sh [-n]' 1>& 2
exit 2
esac
2019-10-24 19:55:06 -04:00
if [ [ " $GOOS " = "linux" ] ] && [ [ " $GOARCH " != "sparc64" ] ] ; then
# Use then new build system
2018-09-30 18:02:42 -07:00
# Files generated through docker (use $cmd so you can Ctl-C the build or run)
$cmd docker build --tag generate:$GOOS $GOOS
$cmd docker run --interactive --tty --volume $( dirname " $( readlink -f " $0 " ) " ) :/build generate:$GOOS
exit
fi
GOOSARCH_in = syscall_$GOOSARCH .go
case " $GOOSARCH " in
_* | *_ | _)
echo 'undefined $GOOS_$GOARCH:' " $GOOSARCH " 1>& 2
exit 1
; ;
aix_ppc)
mkerrors = " $mkerrors -maix32 "
2019-10-24 19:55:06 -04:00
mksyscall = "perl mksyscall_aix.pl -aix"
2018-09-30 18:02:42 -07:00
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
aix_ppc64)
mkerrors = " $mkerrors -maix64 "
2019-10-24 19:55:06 -04:00
mksyscall = "perl mksyscall_aix.pl -aix"
2018-09-30 18:02:42 -07:00
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
darwin_386)
mkerrors = " $mkerrors -m32 "
2019-10-24 19:55:06 -04:00
mksyscall = "./mksyscall.pl -l32"
mksysnum = " ./mksysnum_darwin.pl $( xcrun --show-sdk-path --sdk macosx) /usr/include/sys/syscall.h "
2018-09-30 18:02:42 -07:00
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
darwin_amd64)
mkerrors = " $mkerrors -m64 "
2019-10-24 19:55:06 -04:00
mksysnum = " ./mksysnum_darwin.pl $( xcrun --show-sdk-path --sdk macosx) /usr/include/sys/syscall.h "
2018-09-30 18:02:42 -07:00
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
darwin_arm)
mkerrors = " $mkerrors "
2019-10-24 19:55:06 -04:00
mksysnum = " ./mksysnum_darwin.pl $( xcrun --show-sdk-path --sdk iphoneos) /usr/include/sys/syscall.h "
2018-09-30 18:02:42 -07:00
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
darwin_arm64)
mkerrors = " $mkerrors -m64 "
2019-10-24 19:55:06 -04:00
mksysnum = " ./mksysnum_darwin.pl $( xcrun --show-sdk-path --sdk iphoneos) /usr/include/sys/syscall.h "
2018-09-30 18:02:42 -07:00
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
dragonfly_amd64)
mkerrors = " $mkerrors -m64 "
2019-10-24 19:55:06 -04:00
mksyscall = "./mksyscall.pl -dragonfly"
mksysnum = "curl -s 'http://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master' | ./mksysnum_dragonfly.pl"
2018-09-30 18:02:42 -07:00
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
freebsd_386)
mkerrors = " $mkerrors -m32 "
2019-10-24 19:55:06 -04:00
mksyscall = "./mksyscall.pl -l32"
mksysnum = "curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
2018-09-30 18:02:42 -07:00
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
freebsd_amd64)
mkerrors = " $mkerrors -m64 "
2019-10-24 19:55:06 -04:00
mksysnum = "curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
2018-09-30 18:02:42 -07:00
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
freebsd_arm)
mkerrors = " $mkerrors "
2019-10-24 19:55:06 -04:00
mksyscall = "./mksyscall.pl -l32 -arm"
mksysnum = "curl -s 'http://svn.freebsd.org/base/stable/10/sys/kern/syscalls.master' | ./mksysnum_freebsd.pl"
2018-09-30 18:02:42 -07:00
# Let the type of C char be signed for making the bare syscall
# API consistent across platforms.
mktypes = " GOARCH= $GOARCH go tool cgo -godefs -- -fsigned-char "
; ;
2019-10-24 19:55:06 -04:00
linux_sparc64)
GOOSARCH_in = syscall_linux_sparc64.go
unistd_h = /usr/include/sparc64-linux-gnu/asm/unistd.h
2018-09-30 18:02:42 -07:00
mkerrors = " $mkerrors -m64 "
2019-10-24 19:55:06 -04:00
mksysnum = " ./mksysnum_linux.pl $unistd_h "
2018-09-30 18:02:42 -07:00
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
netbsd_386)
mkerrors = " $mkerrors -m32 "
2019-10-24 19:55:06 -04:00
mksyscall = "./mksyscall.pl -l32 -netbsd"
mksysnum = "curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
2018-09-30 18:02:42 -07:00
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
netbsd_amd64)
mkerrors = " $mkerrors -m64 "
2019-10-24 19:55:06 -04:00
mksyscall = "./mksyscall.pl -netbsd"
mksysnum = "curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
2018-09-30 18:02:42 -07:00
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
netbsd_arm)
mkerrors = " $mkerrors "
2019-10-24 19:55:06 -04:00
mksyscall = "./mksyscall.pl -l32 -netbsd -arm"
mksysnum = "curl -s 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_netbsd.pl"
2018-09-30 18:02:42 -07:00
# Let the type of C char be signed for making the bare syscall
# API consistent across platforms.
mktypes = " GOARCH= $GOARCH go tool cgo -godefs -- -fsigned-char "
; ;
openbsd_386)
mkerrors = " $mkerrors -m32 "
2019-10-24 19:55:06 -04:00
mksyscall = "./mksyscall.pl -l32 -openbsd"
mksysctl = "./mksysctl_openbsd.pl"
mksysnum = "curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
2018-09-30 18:02:42 -07:00
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
openbsd_amd64)
mkerrors = " $mkerrors -m64 "
2019-10-24 19:55:06 -04:00
mksyscall = "./mksyscall.pl -openbsd"
mksysctl = "./mksysctl_openbsd.pl"
mksysnum = "curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
2018-09-30 18:02:42 -07:00
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
openbsd_arm)
mkerrors = " $mkerrors "
2019-10-24 19:55:06 -04:00
mksyscall = "./mksyscall.pl -l32 -openbsd -arm"
mksysctl = "./mksysctl_openbsd.pl"
mksysnum = "curl -s 'http://cvsweb.openbsd.org/cgi-bin/cvsweb/~checkout~/src/sys/kern/syscalls.master' | ./mksysnum_openbsd.pl"
2018-09-30 18:02:42 -07:00
# Let the type of C char be signed for making the bare syscall
# API consistent across platforms.
mktypes = " GOARCH= $GOARCH go tool cgo -godefs -- -fsigned-char "
; ;
solaris_amd64)
2019-10-24 19:55:06 -04:00
mksyscall = "./mksyscall_solaris.pl"
2018-09-30 18:02:42 -07:00
mkerrors = " $mkerrors -m64 "
mksysnum =
mktypes = " GOARCH= $GOARCH go tool cgo -godefs "
; ;
*)
echo 'unrecognized $GOOS_$GOARCH: ' " $GOOSARCH " 1>& 2
exit 1
; ;
esac
(
if [ -n " $mkerrors " ] ; then echo " $mkerrors |gofmt > $zerrors " ; fi
case " $GOOS " in
*)
syscall_goos = " syscall_ $GOOS .go "
case " $GOOS " in
darwin | dragonfly | freebsd | netbsd | openbsd)
syscall_goos = " syscall_bsd.go $syscall_goos "
; ;
esac
2019-10-24 19:55:06 -04:00
if [ -n " $mksyscall " ] ; then echo " $mksyscall -tags $GOOS , $GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_ $GOOSARCH .go " ; fi
; ;
2018-09-30 18:02:42 -07:00
esac
if [ -n " $mksysctl " ] ; then echo " $mksysctl |gofmt > $zsysctl " ; fi
if [ -n " $mksysnum " ] ; then echo " $mksysnum |gofmt >zsysnum_ $GOOSARCH .go " ; fi
2019-10-24 19:55:06 -04:00
if [ -n " $mktypes " ] ; then
echo " $mktypes types_ $GOOS .go | go run mkpost.go > ztypes_ $GOOSARCH .go " ;
fi
2018-09-30 18:02:42 -07:00
) | $run