]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/dist, cmd/go: embed default C++ compiler into cmd/go
authorShenghou Ma <minux.ma@gmail.com>
Tue, 24 Sep 2013 04:17:08 +0000 (00:17 -0400)
committerShenghou Ma <minux.ma@gmail.com>
Tue, 24 Sep 2013 04:17:08 +0000 (00:17 -0400)
Fixes #6426.

R=golang-dev, dave, rsc
CC=golang-dev
https://golang.org/cl/13704044

src/cmd/dist/a.h
src/cmd/dist/build.c
src/cmd/dist/buildgo.c
src/cmd/go/build.go
src/cmd/go/env.go

index 0f46a43166b687ec2347176fe68667c2a80ecc98..5ded13d6f68b8e21c162ad3c992801ae41fb18b0 100644 (file)
@@ -75,6 +75,7 @@ extern char *goroot_final;
 extern char *goextlinkenabled;
 extern char *goversion;
 extern char *defaultcc;
+extern char *defaultcxx;
 extern char *workdir;
 extern char *tooldir;
 extern char *slash;
index 0fe951fc0ee5926b56eda3271114bf02b7f323d0..9fe6058a50d18c3f475a00e70fc46703ba55a33f 100644 (file)
@@ -27,6 +27,7 @@ char *gochar;
 char *goversion;
 char *slash;   // / for unix, \ for windows
 char *defaultcc;
+char *defaultcxx;
 bool   rebuildall;
 bool defaultclang;
 
@@ -163,6 +164,15 @@ init(void)
        }
        defaultcc = btake(&b);
 
+       xgetenv(&b, "CXX");
+       if(b.len == 0) {
+               if(defaultclang)
+                       bprintf(&b, "clang++");
+               else
+                       bprintf(&b, "g++");
+       }
+       defaultcxx = btake(&b);
+
        xsetenv("GOROOT", goroot);
        xsetenv("GOARCH", goarch);
        xsetenv("GOOS", goos);
index f236698c005af6c63795010c71b62f87df70ff19..a340252bc53e013d9d9944546a331490d53c673a 100644 (file)
@@ -12,6 +12,7 @@
 //
 //     package main
 //     const defaultCC = <defaultcc>
+//     const defaultCXX = <defaultcxx>
 //
 // It is invoked to write cmd/go/zdefaultcc.go
 // but we also write cmd/cgo/zdefaultcc.go.
@@ -28,8 +29,9 @@ mkzdefaultcc(char *dir, char *file)
                "\n"
                "package main\n"
                "\n"
-               "const defaultCC = `%s`\n",
-               defaultcc);
+               "const defaultCC = `%s`\n"
+               "const defaultCXX = `%s`\n",
+               defaultcc, defaultcxx);
 
        writefile(&out, file, 0);
 
index 07d8f9ddc43b6007d73f05a1c884b70e0b4e386f..e614f2f5385fa55a4687e080506e17612bc9f087 100644 (file)
@@ -1837,8 +1837,9 @@ func (b *builder) gccCmd(objdir string) []string {
 }
 
 // gxxCmd returns a g++ command line prefix
+// defaultCXX is defined in zdefaultcc.go, written by cmd/dist.
 func (b *builder) gxxCmd(objdir string) []string {
-       return b.ccompilerCmd("CXX", "g++", objdir)
+       return b.ccompilerCmd("CXX", defaultCXX, objdir)
 }
 
 // ccompilerCmd returns a command line prefix for the given environment
index 539364af4e77c7fc9be5d63e44ab9bb8ab2c3bfb..2db821797b00e988c0d4fefe50ce053c04512d6a 100644 (file)
@@ -54,6 +54,8 @@ func mkEnv() []envVar {
                cmd := b.gccCmd(".")
                env = append(env, envVar{"CC", cmd[0]})
                env = append(env, envVar{"GOGCCFLAGS", strings.Join(cmd[3:], " ")})
+               cmd = b.gxxCmd(".")
+               env = append(env, envVar{"CXX", cmd[0]})
        }
 
        if buildContext.CgoEnabled {