src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

mkall.sh (8312B)


      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 	set -e
     53 	$cmd docker build --tag generate:$GOOS $GOOS
     54 	$cmd docker run --interactive --tty --volume $(cd -- "$(dirname -- "$0")/.." && pwd):/build generate:$GOOS
     55 	exit
     56 fi
     57 
     58 GOOSARCH_in=syscall_$GOOSARCH.go
     59 case "$GOOSARCH" in
     60 _* | *_ | _)
     61 	echo 'undefined $GOOS_$GOARCH:' "$GOOSARCH" 1>&2
     62 	exit 1
     63 	;;
     64 aix_ppc)
     65 	mkerrors="$mkerrors -maix32"
     66 	mksyscall="go run mksyscall_aix_ppc.go -aix"
     67 	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
     68 	;;
     69 aix_ppc64)
     70 	mkerrors="$mkerrors -maix64"
     71 	mksyscall="go run mksyscall_aix_ppc64.go -aix"
     72 	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
     73 	;;
     74 darwin_amd64)
     75 	mkerrors="$mkerrors -m64"
     76 	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
     77 	mkasm="go run mkasm.go"
     78 	;;
     79 darwin_arm64)
     80 	mkerrors="$mkerrors -m64"
     81 	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
     82 	mkasm="go run mkasm.go"
     83 	;;
     84 dragonfly_amd64)
     85 	mkerrors="$mkerrors -m64"
     86 	mksyscall="go run mksyscall.go -dragonfly"
     87 	mksysnum="go run mksysnum.go 'https://gitweb.dragonflybsd.org/dragonfly.git/blob_plain/HEAD:/sys/kern/syscalls.master'"
     88 	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
     89 	;;
     90 freebsd_386)
     91 	mkerrors="$mkerrors -m32"
     92 	mksyscall="go run mksyscall.go -l32"
     93 	mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'"
     94 	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
     95 	;;
     96 freebsd_amd64)
     97 	mkerrors="$mkerrors -m64"
     98 	mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'"
     99 	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
    100 	;;
    101 freebsd_arm)
    102 	mkerrors="$mkerrors"
    103 	mksyscall="go run mksyscall.go -l32 -arm"
    104 	mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'"
    105 	# Let the type of C char be signed for making the bare syscall
    106 	# API consistent across platforms.
    107 	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
    108 	;;
    109 freebsd_arm64)
    110 	mkerrors="$mkerrors -m64"
    111 	mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'"
    112 	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
    113 	;;
    114 freebsd_riscv64)
    115 	mkerrors="$mkerrors -m64"
    116 	mksysnum="go run mksysnum.go 'https://cgit.freebsd.org/src/plain/sys/kern/syscalls.master?h=stable/12'"
    117 	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
    118 	;;
    119 netbsd_386)
    120 	mkerrors="$mkerrors -m32"
    121 	mksyscall="go run mksyscall.go -l32 -netbsd"
    122 	mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'"
    123 	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
    124 	;;
    125 netbsd_amd64)
    126 	mkerrors="$mkerrors -m64"
    127 	mksyscall="go run mksyscall.go -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_arm)
    132 	mkerrors="$mkerrors"
    133 	mksyscall="go run mksyscall.go -l32 -netbsd -arm"
    134 	mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'"
    135 	# Let the type of C char be signed for making the bare syscall
    136 	# API consistent across platforms.
    137 	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
    138 	;;
    139 netbsd_arm64)
    140 	mkerrors="$mkerrors -m64"
    141 	mksyscall="go run mksyscall.go -netbsd"
    142 	mksysnum="go run mksysnum.go 'http://cvsweb.netbsd.org/bsdweb.cgi/~checkout~/src/sys/kern/syscalls.master'"
    143 	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
    144 	;;
    145 openbsd_386)
    146 	mkasm="go run mkasm.go"
    147 	mkerrors="$mkerrors -m32"
    148 	mksyscall="go run mksyscall.go -l32 -openbsd -libc"
    149 	mksysctl="go run mksysctl_openbsd.go"
    150 	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
    151 	;;
    152 openbsd_amd64)
    153 	mkasm="go run mkasm.go"
    154 	mkerrors="$mkerrors -m64"
    155 	mksyscall="go run mksyscall.go -openbsd -libc"
    156 	mksysctl="go run mksysctl_openbsd.go"
    157 	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
    158 	;;
    159 openbsd_arm)
    160 	mkasm="go run mkasm.go"
    161 	mkerrors="$mkerrors"
    162 	mksyscall="go run mksyscall.go -l32 -openbsd -arm -libc"
    163 	mksysctl="go run mksysctl_openbsd.go"
    164 	# Let the type of C char be signed for making the bare syscall
    165 	# API consistent across platforms.
    166 	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
    167 	;;
    168 openbsd_arm64)
    169 	mkasm="go run mkasm.go"
    170 	mkerrors="$mkerrors -m64"
    171 	mksyscall="go run mksyscall.go -openbsd -libc"
    172 	mksysctl="go run mksysctl_openbsd.go"
    173 	# Let the type of C char be signed for making the bare syscall
    174 	# API consistent across platforms.
    175 	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
    176 	;;
    177 openbsd_mips64)
    178 	mkasm="go run mkasm.go"
    179 	mkerrors="$mkerrors -m64"
    180 	mksyscall="go run mksyscall.go -openbsd -libc"
    181 	mksysctl="go run mksysctl_openbsd.go"
    182 	# Let the type of C char be signed for making the bare syscall
    183 	# API consistent across platforms.
    184 	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
    185 	;;
    186 openbsd_ppc64)
    187 	mkasm="go run mkasm.go"
    188 	mkerrors="$mkerrors -m64"
    189 	mksyscall="go run mksyscall.go -openbsd -libc"
    190 	mksysctl="go run mksysctl_openbsd.go"
    191 	# Let the type of C char be signed for making the bare syscall
    192 	# API consistent across platforms.
    193 	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
    194 	;;
    195 openbsd_riscv64)
    196 	mkasm="go run mkasm.go"
    197 	mkerrors="$mkerrors -m64"
    198 	mksyscall="go run mksyscall.go -openbsd -libc"
    199 	mksysctl="go run mksysctl_openbsd.go"
    200 	# Let the type of C char be signed for making the bare syscall
    201 	# API consistent across platforms.
    202 	mktypes="GOARCH=$GOARCH go tool cgo -godefs -- -fsigned-char"
    203 	;;
    204 solaris_amd64)
    205 	mksyscall="go run mksyscall_solaris.go"
    206 	mkerrors="$mkerrors -m64"
    207 	mksysnum=
    208 	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
    209 	;;
    210 illumos_amd64)
    211         mksyscall="go run mksyscall_solaris.go"
    212 	mkerrors=
    213 	mksysnum=
    214 	mktypes="GOARCH=$GOARCH go tool cgo -godefs"
    215 	;;
    216 *)
    217 	echo 'unrecognized $GOOS_$GOARCH: ' "$GOOSARCH" 1>&2
    218 	exit 1
    219 	;;
    220 esac
    221 
    222 (
    223 	if [ -n "$mkerrors" ]; then echo "$mkerrors |gofmt >$zerrors"; fi
    224 	case "$GOOS" in
    225 	*)
    226 		syscall_goos="syscall_$GOOS.go"
    227 		case "$GOOS" in
    228 		darwin | dragonfly | freebsd | netbsd | openbsd)
    229 			syscall_goos="syscall_bsd.go $syscall_goos"
    230 			;;
    231 		esac
    232 		if [ -n "$mksyscall" ]; then
    233 			if [ "$GOOSARCH" == "aix_ppc64" ]; then
    234 				# aix/ppc64 script generates files instead of writing to stdin.
    235 				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 " ;
    236 			elif [ "$GOOS" == "illumos" ]; then
    237 			        # illumos code generation requires a --illumos switch
    238 			        echo "$mksyscall -illumos -tags illumos,$GOARCH syscall_illumos.go |gofmt > zsyscall_illumos_$GOARCH.go";
    239 			        # illumos implies solaris, so solaris code generation is also required
    240 				echo "$mksyscall -tags solaris,$GOARCH syscall_solaris.go syscall_solaris_$GOARCH.go |gofmt >zsyscall_solaris_$GOARCH.go";
    241 			else
    242 				echo "$mksyscall -tags $GOOS,$GOARCH $syscall_goos $GOOSARCH_in |gofmt >zsyscall_$GOOSARCH.go";
    243 			fi
    244 		fi
    245 	esac
    246 	if [ -n "$mksysctl" ]; then echo "$mksysctl |gofmt >$zsysctl"; fi
    247 	if [ -n "$mksysnum" ]; then echo "$mksysnum |gofmt >zsysnum_$GOOSARCH.go"; fi
    248 	if [ -n "$mktypes" ]; then echo "$mktypes types_$GOOS.go | go run mkpost.go > ztypes_$GOOSARCH.go"; fi
    249 	if [ -n "$mkasm" ]; then echo "$mkasm $GOOS $GOARCH"; fi
    250 ) | $run