| #!/bin/bash |
| |
| set -e |
| |
| path="${1}" |
| out="${2}" |
| |
| if [[ -z "${path}" ]] || [[ -z "${out}" ]]; then |
| >&2 echo "Usage ${0} <build path> <out path>" |
| exit 1 |
| fi |
| |
| program="$(basename $path)" |
| |
| valid_os=(linux darwin windows) |
| |
| for os in ${valid_os[@]}; do |
| valid_arch=(amd64 386) |
| if [ "linux" = "${os}" ]; then |
| valid_arch=(arm arm64 amd64 386) |
| fi |
| for arch in ${valid_arch[@]}; do |
| arm="" |
| if [ "arm" = "${arch}" ]; then |
| arm="7" |
| fi |
| ext="" |
| if [ "windows" = "${os}" ]; then |
| ext=".exe" |
| fi |
| |
| # Perform the build. |
| export GOOS="${os}" |
| export GOARCH="${arch}" |
| export GOARM="${arm}" |
| dest_dir="${out}/${os}_${arch}" |
| echo "mkdir -p ${dest_dir}" |
| mkdir -p "${dest_dir}" |
| dest_file="${dest_dir}/${program}${ext}" |
| go build -o "${dest_file}" -v "${path}" |
| file "${dest_file}" |
| done |
| done |