func buildOptionOk(ctx build.Context, tag string) bool {
	for _, t := range strings.Split(tag, ",") {
		if !buildTagOk(ctx, t) {
			return false
		}
	}
	return true
}
buildOptionOk return true if all comma separated tags match, false otherwise
package interp
import (
	"go/build"
	"go/parser"
	"path"
	"strconv"
	"strings"
)
func (interp *Interpreter) buildOk(ctx build.Context, name, src string) (bool, error) {
	f, err := parser.ParseFile(interp.fset, name, src, parser.PackageClauseOnly|parser.ParseComments)
	if err != nil {
		return false, err
	}
	for _, g := range f.Comments {
		for _, line := range strings.Split(strings.TrimSpace(g.Text()), "\n") {
			if !buildLineOk(ctx, line) {
				return false, nil
			}
		}
	}
	return true, nil
}
func buildLineOk(ctx build.Context, line string) (ok bool) {
	if len(line) < 7 || line[:7] != "+build " {
		return true
	}
	options := strings.Split(strings.TrimSpace(line[6:]), " ")
	for _, o := range options {
		if ok = buildOptionOk(ctx, o); ok {
			break
		}
	}
	return ok
}