1
0
Эх сурвалжийг харах

build: Set CGO_ENABLED=0 by default, except on specific platforms (#6768)

Simon Frei 5 жил өмнө
parent
commit
3d75819cdb
1 өөрчлөгдсөн 15 нэмэгдсэн , 6 устгасан
  1. 15 6
      build.go

+ 15 - 6
build.go

@@ -451,9 +451,7 @@ func install(target target, tags []string) {
 	}
 	os.Setenv("GOBIN", filepath.Join(cwd, "bin"))
 
-	os.Setenv("GOOS", goos)
-	os.Setenv("GOARCH", goarch)
-	os.Setenv("CC", cc)
+	setBuildEnvVars()
 
 	// On Windows generate a special file which the Go compiler will
 	// automatically use when generating Windows binaries to set things like
@@ -477,9 +475,7 @@ func build(target target, tags []string) {
 
 	rmr(target.BinaryName())
 
-	os.Setenv("GOOS", goos)
-	os.Setenv("GOARCH", goarch)
-	os.Setenv("CC", cc)
+	setBuildEnvVars()
 
 	// On Windows generate a special file which the Go compiler will
 	// automatically use when generating Windows binaries to set things like
@@ -501,6 +497,19 @@ func build(target target, tags []string) {
 	runPrint(goCmd, args...)
 }
 
+func setBuildEnvVars() {
+	os.Setenv("GOOS", goos)
+	os.Setenv("GOARCH", goarch)
+	os.Setenv("CC", cc)
+	if os.Getenv("CGO_ENABLED") == "" {
+		switch goos {
+		case "darwin", "solaris":
+		default:
+			os.Setenv("CGO_ENABLED", "0")
+		}
+	}
+}
+
 func appendParameters(args []string, tags []string, pkgs ...string) []string {
 	if pkgdir != "" {
 		args = append(args, "-pkgdir", pkgdir)