You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
v2ray-core/tools/build/env.go

114 lines
2.0 KiB

package main
import (
"strings"
)
type GoOS string
const (
Windows = GoOS("windows")
MacOS = GoOS("darwin")
Linux = GoOS("linux")
FreeBSD = GoOS("freebsd")
OpenBSD = GoOS("openbsd")
UnknownOS = GoOS("unknown")
)
type GoArch string
const (
X86 = GoArch("386")
Amd64 = GoArch("amd64")
Arm = GoArch("arm")
Arm64 = GoArch("arm64")
Mips64 = GoArch("mips64")
UnknownArch = GoArch("unknown")
)
func parseOS(rawOS string) GoOS {
osStr := strings.ToLower(rawOS)
if osStr == "windows" || osStr == "win" {
return Windows
}
if osStr == "darwin" || osStr == "mac" || osStr == "macos" || osStr == "osx" {
return MacOS
}
if osStr == "linux" || osStr == "debian" || osStr == "ubuntu" || osStr == "redhat" || osStr == "centos" {
return Linux
}
if osStr == "freebsd" {
return FreeBSD
}
if osStr == "openbsd" {
return OpenBSD
}
return UnknownOS
}
func parseArch(rawArch string) GoArch {
archStr := strings.ToLower(rawArch)
if archStr == "x86" || archStr == "386" || archStr == "i386" {
return X86
}
if archStr == "amd64" || archStr == "x86-64" || archStr == "x64" {
return Amd64
}
if archStr == "arm" {
return Arm
}
if archStr == "arm64" {
return Arm64
}
if archStr == "mips" || archStr == "mips64" {
return Mips64
}
return UnknownArch
}
func getSuffix(os GoOS, arch GoArch) string {
suffix := "-custom"
switch os {
case Windows:
switch arch {
case X86:
suffix = "-windows-32"
case Amd64:
suffix = "-windows-64"
}
case MacOS:
suffix = "-macos"
case Linux:
switch arch {
case X86:
suffix = "-linux-32"
case Amd64:
suffix = "-linux-64"
case Arm:
suffix = "-linux-arm"
case Arm64:
suffix = "-linux-arm64"
case Mips64:
suffix = "-linux-mips64"
}
case FreeBSD:
switch arch {
case X86:
suffix = "-freebsd-32"
case Amd64:
suffix = "-freebsd-64"
case Arm:
suffix = "-freebsd-arm"
}
case OpenBSD:
switch arch {
case X86:
suffix = "-openbsd-32"
case Amd64:
suffix = "-openbsd-64"
}
}
return suffix
}