char *goroot_final;
char *goversion;
char *slash; // / for unix, \ for windows
-char *default_goroot;
+char *default_goroot = DEFAULT_GOROOT;
static bool shouldbuild(char*, char*);
static void copy(char*, char*);
Buf b, b1, path;
Vec compile, files, link, go, missing, clean, lib, extra;
Time ttarg, t;
- int i, j, k, n;
+ int i, j, k, n, doclean;
binit(&b);
binit(&b1);
vadd(&compile, bprintf(&b, "-DGOARCH_%s", goos));
}
+ bpathf(&b, "%s/%s", workdir, lastelem(files.p[i]));
+ doclean = 1;
if(!isgo && streq(gohostos, "darwin")) {
// To debug C programs on OS X, it is not enough to say -ggdb
// on the command line. You have to leave the object files
bpathf(&b1, "%s/pkg/obj/%s", goroot, dir);
xmkdirall(bstr(&b1));
bpathf(&b, "%s/%s", bstr(&b1), lastelem(files.p[i]));
- } else
- bpathf(&b, "%s/%s", workdir, lastelem(files.p[i]));
+ doclean = 0;
+ }
b.p[b.len-1] = 'o'; // was c or s
vadd(&compile, "-o");
bgrunv(bstr(&path), CheckExit, &compile);
vadd(&link, bstr(&b));
- vadd(&clean, bstr(&b));
+ if(doclean)
+ vadd(&clean, bstr(&b));
}
bgwait();
binit(&b);
binit(&b1);
- format = "%s=\"%s\"";
+ format = "%s=\"%s\"\n";
pflag = 0;
ARGBEGIN{
case 'p':
vfprintf(stderr, msg, arg);
va_end(arg);
fprintf(stderr, "\n");
+
+ bgwait();
exit(1);
}
int
main(int argc, char **argv)
{
- char *p;
Buf b;
struct utsname u;
binit(&b);
- p = argv[0];
- if(hassuffix(p, "bin/tool/dist")) {
- default_goroot = xstrdup(p);
- default_goroot[strlen(p)-strlen("bin/tool/dist")] = '\0';
- }
slash = "/";
va_end(arg);
xprintf("go tool dist: %s\n", buf1);
+
+ bgwait();
ExitProcess(1);
}
void
xexit(int n)
{
- exit(n);
+ ExitProcess(n);
}
void
setvbuf(stdout, nil, _IOLBF, 0);
setvbuf(stderr, nil, _IOLBF, 0);
- default_goroot = DEFAULT_GOROOT;
-
slash = "\\";
gohostos = "windows";