]> Cypherpunks repositories - gostls13.git/commitdiff
more build refinements:
authorRuss Cox <rsc@golang.org>
Sat, 6 Jun 2009 05:18:32 +0000 (22:18 -0700)
committerRuss Cox <rsc@golang.org>
Sat, 6 Jun 2009 05:18:32 +0000 (22:18 -0700)
 * 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

src/Make.386
src/Make.amd64
src/Make.arm
src/cmd/6l/obj.c
src/cmd/8l/obj.c
src/cmd/ar/Makefile
src/cmd/gc/lex.c
src/cmd/gobuild/makefile.go
src/cmd/gobuild/util.go

index d97965f1cf06c5cafa4704064b9dbfaf6fe79d2c..137220931bc67266b60b670cd856355f2f39f029 100644 (file)
@@ -7,3 +7,4 @@ AS=${O}a
 CC=${O}c
 GC=${O}g
 LD=${O}l
+OS=568vq
\ No newline at end of file
index a6bc9c67d488443eb3b3cf41c7a8ac28f9d2623a..79edb4fee4ab702c6f44cf17d11d907afb695543 100644 (file)
@@ -7,3 +7,4 @@ AS=${O}a
 CC=${O}c
 GC=${O}g
 LD=${O}l
+OS=568vq
\ No newline at end of file
index ef907329dc3a639a27456a4eb1ea841469323712..748cce27e5c8f21f37254853f9c41caabefcaaa1 100644 (file)
@@ -7,3 +7,4 @@ AS=${O}a
 CC=${O}c
 GC=${O}g
 LD=${O}l
+OS=568vq
index 5ab1c561c97295b00909504833e2dd8f75c704f6..23e794c2af4a23da881f880dd534aade8fc1c2bc 100644 (file)
@@ -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'])
index 14dba3e159ee6b131341a6b04d54db7ba3c961c1..fdcf45c882b564847115e4cd407008e3e1f9aac5 100644 (file)
@@ -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'])
index ec499b297093cfc77baa23e673206e6ed0fd00a7..01e97ea63732b260c2012917fa3fe0cea3be675e 100644 (file)
@@ -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\
 
index 51e6534e122e209d8e87c882f39ca5f99c28cbf1..8e4f3504e23d2ffb52b585d6d344286b617a655b 100644 (file)
@@ -212,11 +212,13 @@ addidir(char* dir)
 int
 findpkg(Strlit *name)
 {
-       static char* goroot;
-       Idirp;
+       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;
        }
index e5eb47f19ee3185dc28b18b7d15609f4b8abede7..2c71917630437cfb55adcbb33dd99675fd519090 100644 (file)
@@ -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) {
index e7b3c7789003ed51e41e9aa7a8f0eda425905d01..94a4e6a73d2d36db5ea22dd636a62cc805552829 100644 (file)
@@ -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);
        }