1
0
mirror of https://github.com/golang/go synced 2024-11-26 17:07:09 -07:00

cmd/dist, build: support building statically linked toolchain

Added a new $GO_DISTFLAGS to make.bash, and while we're here,
added mention $CXX in make.bash (CL 13704044).

Fixes #6448.
Update #3564
We can pass GO_DISTFLAGS=-s from misc/dist to make.bash so that
it will build a statically linked toolchain.
(Note: OS X doesn't have the concept of static linking, so don't
pass GO_DISTFLAGS=-s for OS X builds)

R=adg, rsc, iant
CC=golang-dev
https://golang.org/cl/13887043
This commit is contained in:
Shenghou Ma 2013-10-01 23:44:20 -04:00
parent 57d37b55b8
commit 6b188ef57a
4 changed files with 16 additions and 1 deletions

1
src/cmd/dist/a.h vendored
View File

@ -112,6 +112,7 @@ void goc2c(char*, char*);
// main.c
extern int vflag;
extern int sflag;
void usage(void);
void xmain(int argc, char **argv);

View File

@ -720,6 +720,8 @@ install(char *dir)
vadd(&link, bpathf(&b, "%s/%s", tooldir, name));
} else {
vcopy(&link, gccargs.p, gccargs.len);
if(sflag)
vadd(&link, "-static");
vadd(&link, "-o");
targ = link.len;
vadd(&link, bpathf(&b, "%s/%s%s", tooldir, name, exe));
@ -1527,6 +1529,9 @@ cmdbootstrap(int argc, char **argv)
case 'a':
rebuildall = 1;
break;
case 's':
sflag++;
break;
case 'v':
vflag++;
break;
@ -1613,6 +1618,9 @@ cmdinstall(int argc, char **argv)
int i;
ARGBEGIN{
case 's':
sflag++;
break;
case 'v':
vflag++;
break;

1
src/cmd/dist/main.c vendored
View File

@ -5,6 +5,7 @@
#include "a.h"
int vflag;
int sflag;
char *argv0;
// cmdtab records the available commands.

View File

@ -37,6 +37,11 @@
#
# CC: Command line to run to get at host C compiler.
# Default is "gcc". Also supported: "clang".
# CXX: Command line to run to get at host C++ compiler, only recorded
# for cgo use. Default is "g++". Also supported: "clang++".
#
# GO_DISTFLAGS: extra flags to provide to "dist bootstrap". Use "-s"
# to build a statically linked toolchain.
set -e
if [ ! -f run.bash ]; then
@ -140,7 +145,7 @@ buildall="-a"
if [ "$1" = "--no-clean" ]; then
buildall=""
fi
./cmd/dist/dist bootstrap $buildall -v # builds go_bootstrap
./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap
# Delay move of dist tool to now, because bootstrap may clear tool directory.
mv cmd/dist/dist "$GOTOOLDIR"/dist
"$GOTOOLDIR"/go_bootstrap clean -i std