Fix 'local' to not look in the source tree for the file.
Usually 'local' is used along with other rules such as 'no-implicit-rule' or 'dependency' which avoids this problem. It's possible to need to use 'local' while relying on the default rules though for a file which is not in the source tree nor generated in the kernel. Sponsored by: Dell Differential Revision: https://reviews.freebsd.org/D13125
This commit is contained in:
parent
1cbb58886a
commit
1bf59a71c7
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=325955
@ -54,6 +54,7 @@ struct file_list {
|
|||||||
char *f_clean; /* File list to add to clean rule */
|
char *f_clean; /* File list to add to clean rule */
|
||||||
char *f_warn; /* warning message */
|
char *f_warn; /* warning message */
|
||||||
const char *f_objprefix; /* prefix string for object name */
|
const char *f_objprefix; /* prefix string for object name */
|
||||||
|
const char *f_srcprefix; /* source prefix such as $S/ */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct files_name {
|
struct files_name {
|
||||||
|
@ -49,5 +49,5 @@
|
|||||||
*
|
*
|
||||||
* $FreeBSD$
|
* $FreeBSD$
|
||||||
*/
|
*/
|
||||||
#define CONFIGVERS 600014
|
#define CONFIGVERS 600015
|
||||||
#define MAJOR_VERS(x) ((x) / 100000)
|
#define MAJOR_VERS(x) ((x) / 100000)
|
||||||
|
@ -496,6 +496,10 @@ nextparam:;
|
|||||||
tp = new_fent();
|
tp = new_fent();
|
||||||
tp->f_fn = this;
|
tp->f_fn = this;
|
||||||
tp->f_type = filetype;
|
tp->f_type = filetype;
|
||||||
|
if (filetype == LOCAL)
|
||||||
|
tp->f_srcprefix = "";
|
||||||
|
else
|
||||||
|
tp->f_srcprefix = "$S/";
|
||||||
if (imp_rule)
|
if (imp_rule)
|
||||||
tp->f_flags |= NO_IMPLCT_RULE;
|
tp->f_flags |= NO_IMPLCT_RULE;
|
||||||
if (no_obj)
|
if (no_obj)
|
||||||
@ -571,7 +575,8 @@ do_before_depend(FILE *fp)
|
|||||||
if (tp->f_flags & NO_IMPLCT_RULE)
|
if (tp->f_flags & NO_IMPLCT_RULE)
|
||||||
fprintf(fp, "%s ", tp->f_fn);
|
fprintf(fp, "%s ", tp->f_fn);
|
||||||
else
|
else
|
||||||
fprintf(fp, "$S/%s ", tp->f_fn);
|
fprintf(fp, "%s%s ", tp->f_srcprefix,
|
||||||
|
tp->f_fn);
|
||||||
lpos += len + 1;
|
lpos += len + 1;
|
||||||
}
|
}
|
||||||
if (lpos != 8)
|
if (lpos != 8)
|
||||||
@ -636,10 +641,7 @@ do_xxfiles(char *tag, FILE *fp)
|
|||||||
lpos = 8;
|
lpos = 8;
|
||||||
fputs("\\\n\t", fp);
|
fputs("\\\n\t", fp);
|
||||||
}
|
}
|
||||||
if (tp->f_type != LOCAL)
|
fprintf(fp, "%s%s ", tp->f_srcprefix, tp->f_fn);
|
||||||
fprintf(fp, "$S/%s ", tp->f_fn);
|
|
||||||
else
|
|
||||||
fprintf(fp, "%s ", tp->f_fn);
|
|
||||||
lpos += len + 1;
|
lpos += len + 1;
|
||||||
}
|
}
|
||||||
free(suff);
|
free(suff);
|
||||||
@ -685,18 +687,21 @@ do_rules(FILE *f)
|
|||||||
else {
|
else {
|
||||||
*cp = '\0';
|
*cp = '\0';
|
||||||
if (och == 'o') {
|
if (och == 'o') {
|
||||||
fprintf(f, "%s%so:\n\t-cp $S/%so .\n\n",
|
fprintf(f, "%s%so:\n\t-cp %s%so .\n\n",
|
||||||
ftp->f_objprefix, tail(np), np);
|
ftp->f_objprefix, tail(np),
|
||||||
|
ftp->f_srcprefix, np);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (ftp->f_depends) {
|
if (ftp->f_depends) {
|
||||||
fprintf(f, "%s%so: $S/%s%c %s\n",
|
fprintf(f, "%s%so: %s%s%c %s\n",
|
||||||
ftp->f_objprefix, tail(np), np, och,
|
ftp->f_objprefix, tail(np),
|
||||||
|
ftp->f_srcprefix, np, och,
|
||||||
ftp->f_depends);
|
ftp->f_depends);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fprintf(f, "%s%so: $S/%s%c\n",
|
fprintf(f, "%s%so: %s%s%c\n",
|
||||||
ftp->f_objprefix, tail(np), np, och);
|
ftp->f_objprefix, tail(np),
|
||||||
|
ftp->f_srcprefix, np, och);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
compilewith = ftp->f_compilewith;
|
compilewith = ftp->f_compilewith;
|
||||||
@ -725,7 +730,8 @@ do_rules(FILE *f)
|
|||||||
}
|
}
|
||||||
*cp = och;
|
*cp = och;
|
||||||
if (strlen(ftp->f_objprefix))
|
if (strlen(ftp->f_objprefix))
|
||||||
fprintf(f, "\t%s $S/%s\n", compilewith, np);
|
fprintf(f, "\t%s %s%s\n", compilewith,
|
||||||
|
ftp->f_srcprefix, np);
|
||||||
else
|
else
|
||||||
fprintf(f, "\t%s\n", compilewith);
|
fprintf(f, "\t%s\n", compilewith);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user