Files
llgo/runtime/runtime.go
2025-02-15 13:22:28 +08:00

91 lines
2.2 KiB
Go

package runtime
import (
"strings"
)
func SkipToBuild(pkgPath string) bool {
if _, ok := hasAltPkg[pkgPath]; ok {
return false
}
if _, ok := supportInternal[pkgPath]; ok {
return false
}
switch pkgPath {
case "unsafe":
return true
default:
return strings.HasPrefix(pkgPath, "internal/") ||
strings.HasPrefix(pkgPath, "runtime/internal/")
}
}
func IgnoreName(name string) bool {
/* TODO(xsw): confirm this is not needed more
if name == "unsafe.init" {
return true
}
*/
const internal = "internal/"
return (strings.HasPrefix(name, internal) && IsSupportInternal(name)) ||
strings.HasPrefix(name, "runtime/") || strings.HasPrefix(name, "arena.") ||
strings.HasPrefix(name, "maps.") || strings.HasPrefix(name, "plugin.")
}
func IsSupportInternal(path string) (b bool) {
_, b = supportInternal[path]
return
}
func HasAltPkg(path string) (b bool) {
_, b = hasAltPkg[path]
return
}
type none struct{}
var hasAltPkg = map[string]none{
"crypto/hmac": {},
"crypto/md5": {},
"crypto/rand": {},
"crypto/sha1": {},
"crypto/sha256": {},
"crypto/sha512": {},
"crypto/subtle": {},
"hash/crc32": {},
"internal/abi": {},
"internal/bytealg": {},
"internal/itoa": {},
"internal/oserror": {},
"internal/reflectlite": {},
"internal/syscall/execenv": {},
"internal/syscall/unix": {},
"math": {},
"math/big": {},
"math/cmplx": {},
"math/rand": {},
"reflect": {},
"sync": {},
"sync/atomic": {},
"syscall": {},
"time": {},
"os": {},
"os/exec": {},
"runtime": {},
"io": {},
}
var supportInternal = map[string]none{
"internal/abi": {},
"internal/bytealg": {},
"internal/itoa": {},
"internal/oserror": {},
"internal/race": {},
"internal/reflectlite": {},
"internal/stringslite": {},
"internal/filepathlite": {},
"internal/syscall/unix": {},
"internal/syscall/execenv": {},
"internal/fmtsort": {},
}