diff options
Diffstat (limited to 'src/cmd/6l/obj.c')
| -rw-r--r-- | src/cmd/6l/obj.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/cmd/6l/obj.c b/src/cmd/6l/obj.c index 3a4208cd22..b65c7f313b 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); |
