summaryrefslogtreecommitdiff
path: root/src/cmd/6l/obj.c
diff options
context:
space:
mode:
authorRob Pike <r@golang.org>2009-04-17 19:39:45 -0700
committerRob Pike <r@golang.org>2009-04-17 19:39:45 -0700
commitc6e22b2438b7b1b5494ed258a005054c3cab0562 (patch)
tree18ba948edb8376fe9d2d2d7618d045a5d806a0db /src/cmd/6l/obj.c
parent02b51dcd281fd71b83742605b030a8d4f9dc4e0f (diff)
downloadgolang-c6e22b2438b7b1b5494ed258a005054c3cab0562.tar.gz
add -P pkgdir option to 6l to have it look first in pkgdir for a package.
this allows gotest to find the locally built package when doing make gotest without this option, one would have to say make install gotest which kinda defeats the purpose based on discussions with rsc. R=ken,rsc DELTA=12 (10 added, 1 deleted, 1 changed) OCL=27606 CL=27606
Diffstat (limited to 'src/cmd/6l/obj.c')
-rw-r--r--src/cmd/6l/obj.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/cmd/6l/obj.c b/src/cmd/6l/obj.c
index 3a4208cd2..b65c7f313 100644
--- a/src/cmd/6l/obj.c
+++ b/src/cmd/6l/obj.c
@@ -87,6 +87,7 @@ main(int argc, char *argv[])
INITDAT = -1;
INITRND = -1;
INITENTRY = 0;
+ PKGDIR = nil;
ARGBEGIN {
default:
@@ -122,6 +123,11 @@ main(int argc, char *argv[])
if(a)
INITRND = atolwhex(a);
break;
+ case 'P':
+ a = ARGF();
+ if(a)
+ PKGDIR = a;
+ break;
case 'x': /* produce export table */
doexp = 1;
if(argv[1] != nil && argv[1][0] != '-' && !isobjfile(argv[1]))
@@ -684,9 +690,10 @@ addlib(char *src, char *obj)
}
if(search) {
- // try dot and then try goroot.
- // going to have to do better (probably a command line flag) later.
+ // try dot, -P "pkgdir", and then goroot.
snprint(pname, sizeof pname, ".%s", name);
+ if(access(pname, AEXIST) < 0 && PKGDIR != nil)
+ snprint(pname, sizeof pname, "%s/%s", PKGDIR, name);
if(access(pname, AEXIST) < 0)
snprint(pname, sizeof pname, "%s/pkg/%s", goroot, name);
strcpy(name, pname);