summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-06-05 22:18:32 -0700
committerRuss Cox <rsc@golang.org>2009-06-05 22:18:32 -0700
commit408500211e917bc3d571da5e232f459966f2dffe (patch)
tree66da4575dbea9ba9a42a715e52da2a87bd5f6949
parent7904b4f2be23932f2067245b3fd4e299867ff682 (diff)
downloadgolang-408500211e917bc3d571da5e232f459966f2dffe.tar.gz
more build refinements:
* use new Make.$GOARCH files in gobuild. * rename 6ar to arch-generic gopack. * place objects in $GOROOT/pkg/$GOOS_$GOARCH (makes cross-compiling easier, and no one ever types these paths by hand anyway). R=r DELTA=29 (6 added, 8 deleted, 15 changed) OCL=29923 CL=29967
-rw-r--r--src/Make.3861
-rw-r--r--src/Make.amd641
-rw-r--r--src/Make.arm1
-rw-r--r--src/cmd/6l/obj.c2
-rw-r--r--src/cmd/8l/obj.c2
-rw-r--r--src/cmd/ar/Makefile2
-rw-r--r--src/cmd/gc/lex.c10
-rw-r--r--src/cmd/gobuild/makefile.go20
-rw-r--r--src/cmd/gobuild/util.go4
9 files changed, 20 insertions, 23 deletions
diff --git a/src/Make.386 b/src/Make.386
index d97965f1c..137220931 100644
--- a/src/Make.386
+++ b/src/Make.386
@@ -7,3 +7,4 @@ AS=${O}a
CC=${O}c
GC=${O}g
LD=${O}l
+OS=568vq \ No newline at end of file
diff --git a/src/Make.amd64 b/src/Make.amd64
index a6bc9c67d..79edb4fee 100644
--- a/src/Make.amd64
+++ b/src/Make.amd64
@@ -7,3 +7,4 @@ AS=${O}a
CC=${O}c
GC=${O}g
LD=${O}l
+OS=568vq \ No newline at end of file
diff --git a/src/Make.arm b/src/Make.arm
index ef907329d..748cce27e 100644
--- a/src/Make.arm
+++ b/src/Make.arm
@@ -7,3 +7,4 @@ AS=${O}a
CC=${O}c
GC=${O}g
LD=${O}l
+OS=568vq
diff --git a/src/cmd/6l/obj.c b/src/cmd/6l/obj.c
index 5ab1c561c..23e794c2a 100644
--- a/src/cmd/6l/obj.c
+++ b/src/cmd/6l/obj.c
@@ -689,7 +689,7 @@ addlib(char *src, char *obj)
if(access(pname, AEXIST) < 0 && LIBDIR != nil)
snprint(pname, sizeof pname, "%s/%s", LIBDIR, name);
if(access(pname, AEXIST) < 0)
- snprint(pname, sizeof pname, "%s/pkg/%s", goroot, name);
+ snprint(pname, sizeof pname, "%s/pkg/%s_%s/%s", goroot, goos, goarch, name);
strcpy(name, pname);
}
if(debug['v'])
diff --git a/src/cmd/8l/obj.c b/src/cmd/8l/obj.c
index 14dba3e15..fdcf45c88 100644
--- a/src/cmd/8l/obj.c
+++ b/src/cmd/8l/obj.c
@@ -655,7 +655,7 @@ addlib(char *src, char *obj)
if(access(pname, AEXIST) < 0 && LIBDIR != nil)
snprint(pname, sizeof pname, "%s/%s", LIBDIR, name);
if(access(pname, AEXIST) < 0)
- snprint(pname, sizeof pname, "%s/pkg/%s", goroot, name);
+ snprint(pname, sizeof pname, "%s/pkg/%s_%s/%s", goroot, goos, goarch, name);
strcpy(name, pname);
}
if(debug['v'])
diff --git a/src/cmd/ar/Makefile b/src/cmd/ar/Makefile
index ec499b297..01e97ea63 100644
--- a/src/cmd/ar/Makefile
+++ b/src/cmd/ar/Makefile
@@ -8,7 +8,7 @@ include ../../Make.conf
# We call the binary 6ar to avoid confusion and because this binary
# is linked only with amd64 and x86 support.
-TARG=6ar
+TARG=gopack
OFILES=\
ar.$O\
diff --git a/src/cmd/gc/lex.c b/src/cmd/gc/lex.c
index 51e6534e1..8e4f3504e 100644
--- a/src/cmd/gc/lex.c
+++ b/src/cmd/gc/lex.c
@@ -212,11 +212,13 @@ addidir(char* dir)
int
findpkg(Strlit *name)
{
- static char* goroot;
- Idir* p;
+ static char *goroot, *goos, *goarch;
+ Idir *p;
if(goroot == nil) {
goroot = getenv("GOROOT");
+ goos = getenv("GOOS");
+ goarch = getenv("GOARCH");
}
// try .a before .6. important for building libraries:
@@ -238,10 +240,10 @@ findpkg(Strlit *name)
if(access(namebuf, 0) >= 0)
return 1;
if(goroot != nil) {
- snprint(namebuf, sizeof(namebuf), "%s/pkg/%Z.a", goroot, name);
+ snprint(namebuf, sizeof(namebuf), "%s/pkg/%s_%s/%Z.a", goroot, goos, goarch, name);
if(access(namebuf, 0) >= 0)
return 1;
- snprint(namebuf, sizeof(namebuf), "%s/pkg/%Z.%c", goroot, name, thechar);
+ snprint(namebuf, sizeof(namebuf), "%s/pkg/%s_%s/%Z.%c", goroot, goos, goarch, name, thechar);
if(access(namebuf, 0) >= 0)
return 1;
}
diff --git a/src/cmd/gobuild/makefile.go b/src/cmd/gobuild/makefile.go
index e5eb47f19..2c7191763 100644
--- a/src/cmd/gobuild/makefile.go
+++ b/src/cmd/gobuild/makefile.go
@@ -18,16 +18,8 @@ var makefileTemplate =
"\n"
"D={.section Dir}/{@}{.end}\n"
"\n"
- "O_arm=5\n" // TODO(rsc): include something here?
- "O_amd64=6\n"
- "O_386=8\n"
- "OS=568vq\n"
- "\n"
- "O=$(O_$(GOARCH))\n"
- "GC=$(O)g -I{ObjDir}\n"
- "CC=$(O)c -FVw\n"
- "AS=$(O)a\n"
- "AR=6ar\n"
+ "include $(GOROOT)/src/Make.$(GOARCH)\n"
+ "AR=gopack\n"
"\n"
"default: packages\n"
"\n"
@@ -42,7 +34,7 @@ var makefileTemplate =
" 6cov -g `pwd` | grep -v '_test\\.go:'\n"
"\n"
"%.$O: %.go\n"
- " $(GC) $*.go\n"
+ " $(GC) -I{ObjDir} $*.go\n"
"\n"
"%.$O: %.c\n"
" $(CC) $*.c\n"
@@ -86,14 +78,14 @@ var makefileTemplate =
"{.end}\n"
"\n"
"nuke: clean\n"
- " rm -f{.repeated section Packages} $(GOROOT)/pkg$D/{Name}.a{.end}\n"
+ " rm -f{.repeated section Packages} $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/{Name}.a{.end}\n"
"\n"
"packages:{.repeated section Packages} {ObjDir}$D/{Name}.a{.end}\n"
"\n"
"install: packages\n"
- " test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg$D\n"
+ " test -d $(GOROOT)/pkg && mkdir -p $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D\n"
"{.repeated section Packages}\n"
- " cp {ObjDir}$D/{Name}.a $(GOROOT)/pkg$D/{Name}.a\n"
+ " cp {ObjDir}$D/{Name}.a $(GOROOT)/pkg/$(GOOS)_$(GOARCH)$D/{Name}.a\n"
"{.end}\n"
func argsFmt(w io.Writer, x interface{}, format string) {
diff --git a/src/cmd/gobuild/util.go b/src/cmd/gobuild/util.go
index e7b3c7789..94a4e6a73 100644
--- a/src/cmd/gobuild/util.go
+++ b/src/cmd/gobuild/util.go
@@ -59,7 +59,7 @@ func init() {
theChar + "g",
theChar + "c",
theChar + "a",
- "6ar", // sic
+ "gopack",
};
for i, v := range binaries {
@@ -138,7 +138,7 @@ func Build(cmd []string, file string, flag int) (ok bool) {
}
func Archive(pkg string, files []string) {
- argv := []string{ "6ar", "grc", pkg };
+ argv := []string{ "gopack", "grc", pkg };
for i, file := range files {
PushString(&argv, file);
}