#!/bin/sh set -eu export LANG=POSIX.UTF-8 no_main() { grep -v '/main\.go$' } only_main() { grep '/main\.go$' } sources() { find src tests -name '*.go' | grep -v '^src/version\.go$' } libs() { sources | no_main } mains() { sources | only_main } libs | varlist 'libs.go' mains | varlist 'mains.go' find tests/functional/*/*.go | no_main | varlist 'functional-tests/lib.go' find tests/functional/*/main.go | varlist 'functional-tests/main.go' find tests/fuzz/*/*.go | no_main | varlist 'fuzz-targets/lib.go' find tests/fuzz/*/main.go | varlist 'fuzz-targets/main.go' find tests/benchmarks/*/*.go | no_main | varlist 'benchmarks/lib.go' find tests/benchmarks/*/main.go | varlist 'benchmarks/main.go' sources | sort | sed 's/^\(.*\)\.go$/\1.a:\t\1.go/' mains | sort | sed 's/^\(.*\)\.go$/\1.bin:\t\1.a/' mains | sort | sed 's/^\(.*\)\.go$/\1.bin-check:\t\1.bin/' mains | sort | sed 's|^\(.*\)/main\.go$|\1/main.a:\t\1/$(NAME).a|'