Theo says "no need for reconfig, "make config" will do just fine.
okays ? Index: config.h =================================================================== RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/config.h,v retrieving revision 1.25 diff -u -p -r1.25 config.h --- config.h 5 Dec 2012 23:20:26 -0000 1.25 +++ config.h 28 Oct 2013 07:44:56 -0000 @@ -339,6 +339,10 @@ void defoption(const char *name); int devbase_has_instances(struct devbase *, int); int deva_has_instances(struct deva *, int); void setupdirs(void); +int pflag; +char *sflag; +char *bflag; +char *startdir; /* mkheaders.c */ int mkheaders(void); Index: main.c =================================================================== RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/main.c,v retrieving revision 1.44 diff -u -p -r1.44 main.c --- main.c 22 Jun 2012 22:02:29 -0000 1.44 +++ main.c 28 Oct 2013 07:47:13 -0000 @@ -93,15 +93,24 @@ usage(void) exit(1); } +int pflag = 0; +char *sflag = NULL; +char *bflag = NULL; +char *startdir; + int main(int argc, char *argv[]) { char *p; const char *last_component; char *outfile = NULL; - int pflag, ch, eflag, uflag, fflag; + int ch, eflag, uflag, fflag; + char dirbuffer[PATH_MAX]; pflag = eflag = uflag = fflag = 0; + startdir = getcwd(dirbuffer, sizeof dirbuffer); + if (startdir == NULL) + warn("Can't getcwd, no make reconfig"); while ((ch = getopt(argc, argv, "egpfb:s:o:u")) != -1) { switch (ch) { @@ -148,10 +157,12 @@ main(int argc, char *argv[]) break; case 'b': + bflag = optarg; builddir = optarg; break; case 's': + sflag = optarg; srcdir = optarg; break; Index: mkmakefile.c =================================================================== RCS file: /build/data/openbsd/cvs/src/usr.sbin/config/mkmakefile.c,v retrieving revision 1.37 diff -u -p -r1.37 mkmakefile.c --- mkmakefile.c 17 Sep 2012 17:36:13 -0000 1.37 +++ mkmakefile.c 28 Oct 2013 17:57:38 -0000 @@ -60,6 +60,7 @@ static const char *srcpath(struct files *); static int emitdefs(FILE *); +static int emitreconfig(FILE *); static int emitfiles(FILE *, int); static int emitobjs(FILE *); @@ -120,6 +121,10 @@ mkmakefile(void) if ((*fn)(ofp)) goto wrerror; } + if (startdir != NULL) { + if (emitreconfig(ofp) != 0) + goto wrerror; + } if (ferror(ifp)) { (void)fprintf(stderr, "config: error reading %s (at line %d): %s\n", @@ -271,6 +276,33 @@ emitdefs(FILE *fp) for (nv = mkoptions; nv != NULL; nv = nv->nv_next) if (fprintf(fp, "%s=%s\n", nv->nv_name, nv->nv_str) < 0) return (1); + return (0); +} + +static int +emitreconfig(FILE *fp) +{ + if (fputs("\n" + ".PHONY: config\n" + "config:\n", fp) < 0) + return (1); + if (fprintf(fp, "\tcd %s && config ", startdir) < 0) + return (1); + if (pflag) { + if (fputs("-p ", fp) < 0) + return (1); + } + if (sflag) { + if (fprintf(fp, "-s %s ", sflag) < 0) + return (1); + } + if (bflag) { + if (fprintf(fp, "-b %s ", bflag) < 0) + return (1); + } + /* other options */ + if (fprintf(fp, "%s\n", conffile) < 0) + return (1); return (0); }