1
2
3
4
5
6
7 package main
8
9 import (
10 "bytes"
11 "fmt"
12 "log"
13 "os"
14 "strconv"
15 "strings"
16 )
17
18 var goarches []string
19
20 func main() {
21 data, err := os.ReadFile("../../go/build/syslist.go")
22 if err != nil {
23 log.Fatal(err)
24 }
25 const goarchPrefix = `const goarchList = `
26 for _, line := range strings.Split(string(data), "\n") {
27 if strings.HasPrefix(line, goarchPrefix) {
28 text, err := strconv.Unquote(strings.TrimPrefix(line, goarchPrefix))
29 if err != nil {
30 log.Fatalf("parsing goarchList: %v", err)
31 }
32 goarches = strings.Fields(text)
33 }
34 }
35
36 for _, target := range goarches {
37 if target == "amd64p32" {
38 continue
39 }
40 var buf bytes.Buffer
41 fmt.Fprintf(&buf, "// Code generated by gengoarch.go using 'go generate'. DO NOT EDIT.\n\n")
42 fmt.Fprintf(&buf, "//go:build %s\n", target)
43 fmt.Fprintf(&buf, "package goarch\n\n")
44 fmt.Fprintf(&buf, "const GOARCH = `%s`\n\n", target)
45 for _, goarch := range goarches {
46 value := 0
47 if goarch == target {
48 value = 1
49 }
50 fmt.Fprintf(&buf, "const Is%s = %d\n", strings.Title(goarch), value)
51 }
52 err := os.WriteFile("zgoarch_"+target+".go", buf.Bytes(), 0666)
53 if err != nil {
54 log.Fatal(err)
55 }
56 }
57 }
58
View as plain text