1// Copyright 2012 The Go Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style 3// license that can be found in the LICENSE file. 4 5package main 6 7import ( 8 "fmt" 9 "strings" 10) 11 12/* 13 * Helpers for building runtime. 14 */ 15 16// mkzversion writes zversion.go: 17// 18// package sys 19// 20// (Nothing right now!) 21func mkzversion(dir, file string) { 22 var buf strings.Builder 23 writeHeader(&buf) 24 fmt.Fprintf(&buf, "package sys\n") 25 writefile(buf.String(), file, writeSkipSame) 26} 27 28// mkbuildcfg writes internal/buildcfg/zbootstrap.go: 29// 30// package buildcfg 31// 32// const defaultGOROOT = <goroot> 33// const defaultGO386 = <go386> 34// ... 35// const defaultGOOS = runtime.GOOS 36// const defaultGOARCH = runtime.GOARCH 37// 38// The use of runtime.GOOS and runtime.GOARCH makes sure that 39// a cross-compiled compiler expects to compile for its own target 40// system. That is, if on a Mac you do: 41// 42// GOOS=linux GOARCH=ppc64 go build cmd/compile 43// 44// the resulting compiler will default to generating linux/ppc64 object files. 45// This is more useful than having it default to generating objects for the 46// original target (in this example, a Mac). 47func mkbuildcfg(file string) { 48 var buf strings.Builder 49 writeHeader(&buf) 50 fmt.Fprintf(&buf, "package buildcfg\n") 51 fmt.Fprintln(&buf) 52 fmt.Fprintf(&buf, "import \"runtime\"\n") 53 fmt.Fprintln(&buf) 54 fmt.Fprintf(&buf, "const defaultGO386 = `%s`\n", go386) 55 fmt.Fprintf(&buf, "const defaultGOAMD64 = `%s`\n", goamd64) 56 fmt.Fprintf(&buf, "const defaultGOARM = `%s`\n", goarm) 57 fmt.Fprintf(&buf, "const defaultGOARM64 = `%s`\n", goarm64) 58 fmt.Fprintf(&buf, "const defaultGOMIPS = `%s`\n", gomips) 59 fmt.Fprintf(&buf, "const defaultGOMIPS64 = `%s`\n", gomips64) 60 fmt.Fprintf(&buf, "const defaultGOPPC64 = `%s`\n", goppc64) 61 fmt.Fprintf(&buf, "const defaultGORISCV64 = `%s`\n", goriscv64) 62 fmt.Fprintf(&buf, "const defaultGOEXPERIMENT = `%s`\n", goexperiment) 63 fmt.Fprintf(&buf, "const defaultGO_EXTLINK_ENABLED = `%s`\n", goextlinkenabled) 64 fmt.Fprintf(&buf, "const defaultGO_LDSO = `%s`\n", defaultldso) 65 fmt.Fprintf(&buf, "const version = `%s`\n", findgoversion()) 66 fmt.Fprintf(&buf, "const defaultGOOS = runtime.GOOS\n") 67 fmt.Fprintf(&buf, "const defaultGOARCH = runtime.GOARCH\n") 68 69 writefile(buf.String(), file, writeSkipSame) 70} 71 72// mkobjabi writes cmd/internal/objabi/zbootstrap.go: 73// 74// package objabi 75// 76// (Nothing right now!) 77func mkobjabi(file string) { 78 var buf strings.Builder 79 writeHeader(&buf) 80 fmt.Fprintf(&buf, "package objabi\n") 81 82 writefile(buf.String(), file, writeSkipSame) 83} 84