mirror of
https://github.com/golang/go
synced 2024-11-19 05:44:40 -07:00
adbca13cb3
Otherwise both zgoos_linux.go and zgoos_android.go will be compiled for GOOS=android. LGTM=crawshaw, rsc R=rsc, crawshaw CC=golang-codereviews https://golang.org/cl/178110043
85 lines
2.1 KiB
Go
85 lines
2.1 KiB
Go
// Copyright 2014 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// +build ignore
|
|
|
|
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"log"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
var gooses, goarches []string
|
|
|
|
func main() {
|
|
data, err := ioutil.ReadFile("../go/build/syslist.go")
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
const (
|
|
goosPrefix = `const goosList = `
|
|
goarchPrefix = `const goarchList = `
|
|
)
|
|
for _, line := range strings.Split(string(data), "\n") {
|
|
if strings.HasPrefix(line, goosPrefix) {
|
|
text, err := strconv.Unquote(strings.TrimPrefix(line, goosPrefix))
|
|
if err != nil {
|
|
log.Fatalf("parsing goosList %#q: %v", strings.TrimPrefix(line, goosPrefix), err)
|
|
}
|
|
gooses = strings.Fields(text)
|
|
}
|
|
if strings.HasPrefix(line, goarchPrefix) {
|
|
text, err := strconv.Unquote(strings.TrimPrefix(line, goarchPrefix))
|
|
if err != nil {
|
|
log.Fatal("parsing goarchList: %v", err)
|
|
}
|
|
goarches = strings.Fields(text)
|
|
}
|
|
}
|
|
|
|
for _, target := range gooses {
|
|
var buf bytes.Buffer
|
|
fmt.Fprintf(&buf, "// generated by gengoos.go using 'go generate'\n\n")
|
|
if target == "linux" {
|
|
fmt.Fprintf(&buf, "// +build !android\n\n") // must explicitly exclude android for linux
|
|
}
|
|
fmt.Fprintf(&buf, "package runtime\n\n")
|
|
fmt.Fprintf(&buf, "const theGoos = `%s`\n\n", target)
|
|
for _, goos := range gooses {
|
|
value := 0
|
|
if goos == target {
|
|
value = 1
|
|
}
|
|
fmt.Fprintf(&buf, "const goos_%s = %d\n", goos, value)
|
|
}
|
|
err := ioutil.WriteFile("zgoos_"+target+".go", buf.Bytes(), 0666)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
for _, target := range goarches {
|
|
var buf bytes.Buffer
|
|
fmt.Fprintf(&buf, "// generated by gengoos.go using 'go generate'\n\n")
|
|
fmt.Fprintf(&buf, "package runtime\n\n")
|
|
fmt.Fprintf(&buf, "const theGoarch = `%s`\n\n", target)
|
|
for _, goarch := range goarches {
|
|
value := 0
|
|
if goarch == target {
|
|
value = 1
|
|
}
|
|
fmt.Fprintf(&buf, "const goarch_%s = %d\n", goarch, value)
|
|
}
|
|
err := ioutil.WriteFile("zgoarch_"+target+".go", buf.Bytes(), 0666)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
}
|