Generator native uses GOARCH and GOOS instead of cond. compilation

This commit is contained in:
Sasha Koshka 2024-03-28 16:02:56 -04:00
parent eccb2e9a5b
commit e805060370
34 changed files with 46 additions and 262 deletions

View File

@ -2,6 +2,7 @@
// This is accomplished using several conditionally compiled source files.
package native
import "runtime"
import "git.tebibyte.media/fspl/fspl/generator"
// LLVM supported operating systems (note: capitalization is wrong)
@ -11,7 +12,50 @@ import "git.tebibyte.media/fspl/fspl/generator"
// NativeTarget returns a target describing the current system.
func NativeTarget () generator.Target {
target := nativeArch()
target.OS = nativeOS()
target := generator.Target { }
switch runtime.GOARCH {
case "386": target.WordSize = 32; target.Arch = "i386"
case "amd64": target.WordSize = 64; target.Arch = "x86_64"
case "amd64p32": target.WordSize = 32; target.Arch = "x86" // might be inaccurate
case "arm": target.WordSize = 32; target.Arch = "arm"
case "arm64": target.WordSize = 64; target.Arch = "aarch64"
case "arm64be": target.WordSize = 64; target.Arch = "aarch64_be"
case "armbe": target.WordSize = 32; target.Arch = "armeb"
case "loong": target.WordSize = 32; target.Arch = "loongarch32"
case "loong64": target.WordSize = 64; target.Arch = "loongarch64"
case "mips": target.WordSize = 32; target.Arch = "mips"
case "mips64": target.WordSize = 64; target.Arch = "mips64"
case "mips64le": target.WordSize = 64; target.Arch = "mips64el"
case "mipsle": target.WordSize = 32; target.Arch = "mipsel"
case "ppc": target.WordSize = 32; target.Arch = "ppc32"
case "ppc64": target.WordSize = 64; target.Arch = "ppc64"
case "ppc64le": target.WordSize = 64; target.Arch = "ppc64le"
case "riscv": target.WordSize = 32; target.Arch = "riscv32"
case "riscv64": target.WordSize = 64; target.Arch = "riscv64"
case "sparc": target.WordSize = 32; target.Arch = "sparc"
case "sparc64": target.WordSize = 64; target.Arch = "sparcv9"
case "wasm": target.WordSize = 64; target.Arch = "wasm64"
default: target.WordSize = 64; target.Arch = "unknown"
}
switch runtime.GOOS {
case "aix": target.OS = "aix"
case "android": target.OS = "linux"
case "darwin": target.OS = "darwin"
case "dragonfly": target.OS = "dragonfly"
case "freebsd": target.OS = "freebsd"
case "illumos": target.OS = "illumos"
case "ios": target.OS = "ios"
case "js": target.OS = "unknown"
case "linux": target.OS = "linux"
case "nacl": target.OS = "nacl"
case "netbsd": target.OS = "netbsd"
case "openbsd": target.OS = "openbsd"
case "plan9": target.OS = "plan9" // does not seem to be supported by LLVM at the moment
case "solaris": target.OS = "solaris"
case "wasip1": target.OS = "wasi"
case "windows": target.OS = "win32"
default: target.OS = "unknown"
}
return target
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 32,
Arch: "i386",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 64,
Arch: "x86_64",
}
}

View File

@ -1,11 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
// this may not be accurate, can't find info online about amd64p32
return generator.Target {
WordSize: 32,
Arch: "x86",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 32,
Arch: "arm",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 64,
Arch: "aarch64",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 64,
Arch: "aarch64_be",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 32,
Arch: "armeb",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 32,
Arch: "mips",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 64,
Arch: "mips64",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 64,
Arch: "mips64el",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 32,
Arch: "mipsel",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 32,
Arch: "ppc32",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 64,
Arch: "ppc64",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 64,
Arch: "ppc64le",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 32,
Arch: "riscv32",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 32,
Arch: "sparc",
}
}

View File

@ -1,10 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
return generator.Target {
WordSize: 64,
Arch: "sparcv9",
}
}

View File

@ -1,12 +0,0 @@
package native
import "git.tebibyte.media/fspl/fspl/generator"
func nativeArch () generator.Target {
// FIXME: golang doesn't discern between 32/64 bit wasm so we assume 64
// bit here
return generator.Target {
WordSize: 64,
Arch: "wasm64",
}
}

View File

@ -1,5 +0,0 @@
package native
func nativeOS () string {
return "aix"
}

View File

@ -1,5 +0,0 @@
package native
func nativeOS () string {
return "linux"
}

View File

@ -1,5 +0,0 @@
package native
func nativeOS () string {
return "darwin"
}

View File

@ -1,5 +0,0 @@
package native
func nativeOS () string {
return "dragonfly"
}

View File

@ -1,5 +0,0 @@
package native
func nativeOS () string {
return "freebsd"
}

View File

@ -1,6 +0,0 @@
package native
func nativeOS () string {
// does not seem to be supported by LLVM at the moment
return "illumos"
}

View File

@ -1,5 +0,0 @@
package native
func nativeOS () string {
return "ios"
}

View File

@ -1,5 +0,0 @@
package native
func nativeOS () string {
return "unknown"
}

View File

@ -1,5 +0,0 @@
package native
func nativeOS () string {
return "linux"
}

View File

@ -1,5 +0,0 @@
package native
func nativeOS () string {
return "nacl"
}

View File

@ -1,5 +0,0 @@
package native
func nativeOS () string {
return "netbsd"
}

View File

@ -1,5 +0,0 @@
package native
func nativeOS () string {
return "openbsd"
}

View File

@ -1,6 +0,0 @@
package native
func nativeOS () string {
// does not seem to be supported by LLVM at the moment
return "plan9"
}

View File

@ -1,5 +0,0 @@
package native
func nativeOS () string {
return "solaris"
}

View File

@ -1,5 +0,0 @@
package native
func nativeOS () string {
return "win32"
}