Use go:linkname to access build.Default and modify Compiler in init function. This is much simpler than patching defaultContext() and all its dependencies. - Reduced from 137 lines to 27 lines - Removed zcgo.go (no longer needed) - Removed complex parseGoVersion, defaultContext, and helper functions - Now just sets build.Default.Compiler = "gc" in init() Generated with [codeagent](https://github.com/qbox/codeagent) Co-authored-by: luoliwoshang <luoliwoshang@users.noreply.github.com>
28 lines
812 B
Go
28 lines
812 B
Go
// Copyright 2024 The GoPlus Authors (goplus.org). All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// Package build provides alternative implementations for go/build.
|
|
// We override build.Default.Compiler in an init function.
|
|
|
|
package build
|
|
|
|
import (
|
|
"go/build"
|
|
"runtime"
|
|
_ "unsafe"
|
|
)
|
|
|
|
//go:linkname buildDefault go/build.Default
|
|
var buildDefault build.Context
|
|
|
|
func init() {
|
|
// LLGO PATCH: Override build.Default.Compiler to be "gc" instead of "llgo"
|
|
// This prevents "unknown compiler" errors when user code uses go/build package
|
|
// Even though runtime.Compiler = "llgo", we set build.Default.Compiler = "gc"
|
|
buildDefault.Compiler = "gc"
|
|
|
|
// Verify that runtime.Compiler is still "llgo" (unchanged)
|
|
_ = runtime.Compiler
|
|
}
|