Import bmake-20160818
Interesting changes: o meta.c: move handling of .MAKE.META.IGNORE_* to meta_ignore() so we can call it before adding entries to missingFiles. Thus we do not track files we have been told to ignore. o meta_oodate: apply .MAKE.META.IGNORE_FILTER (if defined) to pathnames, and skip if the expansion is empty. Useful for dirdeps.mk when checking DIRDEPS_CACHE. o meta.c: remove all missingFiles entries that match a deleted dir. o main.c: set .ERROR_CMD if possible.
This commit is contained in:
parent
e6b08231c8
commit
cdfa59c89c
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/vendor/NetBSD/bmake/dist/; revision=305631 svn path=/vendor/NetBSD/bmake/20160818/; revision=305632; tag=vendor/NetBSD/bmake/20160818
29
ChangeLog
29
ChangeLog
@ -1,3 +1,32 @@
|
|||||||
|
2016-08-18 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||||
|
|
||||||
|
* Makefile (_MAKE_VERSION): 20160818
|
||||||
|
its a neater number; pick up whitespace fixes to man page.
|
||||||
|
|
||||||
|
2016-08-17 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||||
|
|
||||||
|
* Makefile (_MAKE_VERSION): 20160817
|
||||||
|
Merge with NetBSD make, pick up
|
||||||
|
o meta.c: move handling of .MAKE.META.IGNORE_* to meta_ignore()
|
||||||
|
so we can call it before adding entries to missingFiles.
|
||||||
|
Thus we do not track files we have been told to ignore.
|
||||||
|
|
||||||
|
2016-08-15 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||||
|
|
||||||
|
* Makefile (_MAKE_VERSION): 20160815
|
||||||
|
Merge with NetBSD make, pick up
|
||||||
|
o meta_oodate: apply .MAKE.META.IGNORE_FILTER (if defined) to
|
||||||
|
pathnames, and skip if the expansion is empty.
|
||||||
|
Useful for dirdeps.mk when checking DIRDEPS_CACHE.
|
||||||
|
|
||||||
|
2016-08-12 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||||
|
|
||||||
|
* Makefile (_MAKE_VERSION): 20160812
|
||||||
|
Merge with NetBSD make, pick up
|
||||||
|
o meta.c: remove all missingFiles entries that match a deleted
|
||||||
|
dir.
|
||||||
|
o main.c: set .ERROR_CMD if possible.
|
||||||
|
|
||||||
2016-06-06 Simon J. Gerraty <sjg@bad.crufty.net>
|
2016-06-06 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||||
|
|
||||||
* Makefile (_MAKE_VERSION): 20160606
|
* Makefile (_MAKE_VERSION): 20160606
|
||||||
|
4
Makefile
4
Makefile
@ -1,7 +1,7 @@
|
|||||||
# $Id: Makefile,v 1.67 2016/06/07 00:46:12 sjg Exp $
|
# $Id: Makefile,v 1.72 2016/08/18 23:02:26 sjg Exp $
|
||||||
|
|
||||||
# Base version on src date
|
# Base version on src date
|
||||||
_MAKE_VERSION= 20160606
|
_MAKE_VERSION= 20160818
|
||||||
|
|
||||||
PROG= bmake
|
PROG= bmake
|
||||||
|
|
||||||
|
21
bmake.1
21
bmake.1
@ -1,4 +1,4 @@
|
|||||||
.\" $NetBSD: make.1,v 1.259 2016/06/03 07:07:37 wiz Exp $
|
.\" $NetBSD: make.1,v 1.262 2016/08/18 19:23:20 wiz Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 1990, 1993
|
.\" Copyright (c) 1990, 1993
|
||||||
.\" The Regents of the University of California. All rights reserved.
|
.\" The Regents of the University of California. All rights reserved.
|
||||||
@ -29,7 +29,7 @@
|
|||||||
.\"
|
.\"
|
||||||
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
|
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
|
||||||
.\"
|
.\"
|
||||||
.Dd June 2, 2016
|
.Dd August 15, 2016
|
||||||
.Dt MAKE 1
|
.Dt MAKE 1
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@ -927,6 +927,9 @@ The default list includes:
|
|||||||
.It Va .MAKE.META.IGNORE_PATTERNS
|
.It Va .MAKE.META.IGNORE_PATTERNS
|
||||||
Provides a list of patterns to match against pathnames.
|
Provides a list of patterns to match against pathnames.
|
||||||
Ignore any that match.
|
Ignore any that match.
|
||||||
|
.It Va .MAKE.META.IGNORE_FILTER
|
||||||
|
Provides a list of variable modifiers to apply to each pathname.
|
||||||
|
Ignore if the expansion is an empty string.
|
||||||
.It Va .MAKE.META.PREFIX
|
.It Va .MAKE.META.PREFIX
|
||||||
Defines the message printed for each meta file updated in "meta verbose" mode.
|
Defines the message printed for each meta file updated in "meta verbose" mode.
|
||||||
The default value is:
|
The default value is:
|
||||||
@ -974,7 +977,19 @@ per normal evaluation rules.
|
|||||||
.It Va MAKE_PRINT_VAR_ON_ERROR
|
.It Va MAKE_PRINT_VAR_ON_ERROR
|
||||||
When
|
When
|
||||||
.Nm
|
.Nm
|
||||||
stops due to an error, it prints its name and the value of
|
stops due to an error, it sets
|
||||||
|
.Ql Va .ERROR_TARGET
|
||||||
|
to the name of the target that failed,
|
||||||
|
.Ql Va .ERROR_CMD
|
||||||
|
to the commands of the failed target,
|
||||||
|
and in "meta" mode, it also sets
|
||||||
|
.Ql Va .ERROR_CWD
|
||||||
|
to the
|
||||||
|
.Xr getcwd 3 ,
|
||||||
|
and
|
||||||
|
.Ql Va .ERROR_META_FILE
|
||||||
|
to the path of the meta file (if any) describing the failed target.
|
||||||
|
It then prints its name and the value of
|
||||||
.Ql Va .CURDIR
|
.Ql Va .CURDIR
|
||||||
as well as the value of any variables named in
|
as well as the value of any variables named in
|
||||||
.Ql Va MAKE_PRINT_VAR_ON_ERROR .
|
.Ql Va MAKE_PRINT_VAR_ON_ERROR .
|
||||||
|
17
bmake.cat1
17
bmake.cat1
@ -604,6 +604,10 @@ VVAARRIIAABBLLEE AASSSSIIGGNNMMEENNTTSS
|
|||||||
Provides a list of patterns to match against pathnames.
|
Provides a list of patterns to match against pathnames.
|
||||||
Ignore any that match.
|
Ignore any that match.
|
||||||
|
|
||||||
|
_._M_A_K_E_._M_E_T_A_._I_G_N_O_R_E___F_I_L_T_E_R
|
||||||
|
Provides a list of variable modifiers to apply to each
|
||||||
|
pathname. Ignore if the expansion is an empty string.
|
||||||
|
|
||||||
_._M_A_K_E_._M_E_T_A_._P_R_E_F_I_X
|
_._M_A_K_E_._M_E_T_A_._P_R_E_F_I_X
|
||||||
Defines the message printed for each meta file updated in
|
Defines the message printed for each meta file updated in
|
||||||
"meta verbose" mode. The default value is:
|
"meta verbose" mode. The default value is:
|
||||||
@ -635,9 +639,14 @@ VVAARRIIAABBLLEE AASSSSIIGGNNMMEENNTTSS
|
|||||||
becomes `$' per normal evaluation rules.
|
becomes `$' per normal evaluation rules.
|
||||||
|
|
||||||
_M_A_K_E___P_R_I_N_T___V_A_R___O_N___E_R_R_O_R
|
_M_A_K_E___P_R_I_N_T___V_A_R___O_N___E_R_R_O_R
|
||||||
When bbmmaakkee stops due to an error, it prints its name and
|
When bbmmaakkee stops due to an error, it sets `_._E_R_R_O_R___T_A_R_G_E_T'
|
||||||
the value of `_._C_U_R_D_I_R' as well as the value of any vari-
|
to the name of the target that failed, `_._E_R_R_O_R___C_M_D' to
|
||||||
ables named in `_M_A_K_E___P_R_I_N_T___V_A_R___O_N___E_R_R_O_R'.
|
the commands of the failed target, and in "meta" mode, it
|
||||||
|
also sets `_._E_R_R_O_R___C_W_D' to the getcwd(3), and
|
||||||
|
`_._E_R_R_O_R___M_E_T_A___F_I_L_E' to the path of the meta file (if any)
|
||||||
|
describing the failed target. It then prints its name
|
||||||
|
and the value of `_._C_U_R_D_I_R' as well as the value of any
|
||||||
|
variables named in `_M_A_K_E___P_R_I_N_T___V_A_R___O_N___E_R_R_O_R'.
|
||||||
|
|
||||||
_._n_e_w_l_i_n_e This variable is simply assigned a newline character as
|
_._n_e_w_l_i_n_e This variable is simply assigned a newline character as
|
||||||
its value. This allows expansions using the ::@@ modifier
|
its value. This allows expansions using the ::@@ modifier
|
||||||
@ -1489,4 +1498,4 @@ BBUUGGSS
|
|||||||
|
|
||||||
There is no way of escaping a space character in a filename.
|
There is no way of escaping a space character in a filename.
|
||||||
|
|
||||||
NetBSD 5.1 June 2, 2016 NetBSD 5.1
|
NetBSD 5.1 August 15, 2016 NetBSD 5.1
|
||||||
|
21
main.c
21
main.c
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: main.c,v 1.247 2016/06/05 01:39:17 christos Exp $ */
|
/* $NetBSD: main.c,v 1.250 2016/08/11 19:53:17 sjg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -69,7 +69,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: main.c,v 1.247 2016/06/05 01:39:17 christos Exp $";
|
static char rcsid[] = "$NetBSD: main.c,v 1.250 2016/08/11 19:53:17 sjg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
@ -81,7 +81,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1990, 1993\
|
|||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 3/19/94";
|
static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 3/19/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: main.c,v 1.247 2016/06/05 01:39:17 christos Exp $");
|
__RCSID("$NetBSD: main.c,v 1.250 2016/08/11 19:53:17 sjg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -1903,11 +1903,10 @@ cached_realpath(const char *pathname, char *resolved)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
rp = Var_Value(pathname, cache, &cp);
|
if ((rp = Var_Value(pathname, cache, &cp)) != NULL) {
|
||||||
if (rp) {
|
|
||||||
/* a hit */
|
/* a hit */
|
||||||
strlcpy(resolved, rp, MAXPATHLEN);
|
strlcpy(resolved, rp, MAXPATHLEN);
|
||||||
} else if ((rp = realpath(pathname, resolved))) {
|
} else if ((rp = realpath(pathname, resolved)) != NULL) {
|
||||||
Var_Set(pathname, rp, cache, 0);
|
Var_Set(pathname, rp, cache, 0);
|
||||||
}
|
}
|
||||||
free(cp);
|
free(cp);
|
||||||
@ -1922,6 +1921,14 @@ PrintAddr(void *a, void *b)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
addErrorCMD(void *cmdp, void *gnp)
|
||||||
|
{
|
||||||
|
if (cmdp == NULL)
|
||||||
|
return 1; /* stop */
|
||||||
|
Var_Append(".ERROR_CMD", cmdp, VAR_GLOBAL);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PrintOnError(GNode *gn, const char *s)
|
PrintOnError(GNode *gn, const char *s)
|
||||||
@ -1942,6 +1949,8 @@ PrintOnError(GNode *gn, const char *s)
|
|||||||
* We can print this even if there is no .ERROR target.
|
* We can print this even if there is no .ERROR target.
|
||||||
*/
|
*/
|
||||||
Var_Set(".ERROR_TARGET", gn->name, VAR_GLOBAL, 0);
|
Var_Set(".ERROR_TARGET", gn->name, VAR_GLOBAL, 0);
|
||||||
|
Var_Delete(".ERROR_CMD", VAR_GLOBAL);
|
||||||
|
Lst_ForEach(gn->commands, addErrorCMD, gn);
|
||||||
}
|
}
|
||||||
strncpy(tmp, "${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'\n@}",
|
strncpy(tmp, "${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'\n@}",
|
||||||
sizeof(tmp) - 1);
|
sizeof(tmp) - 1);
|
||||||
|
21
make.1
21
make.1
@ -1,4 +1,4 @@
|
|||||||
.\" $NetBSD: make.1,v 1.259 2016/06/03 07:07:37 wiz Exp $
|
.\" $NetBSD: make.1,v 1.262 2016/08/18 19:23:20 wiz Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 1990, 1993
|
.\" Copyright (c) 1990, 1993
|
||||||
.\" The Regents of the University of California. All rights reserved.
|
.\" The Regents of the University of California. All rights reserved.
|
||||||
@ -29,7 +29,7 @@
|
|||||||
.\"
|
.\"
|
||||||
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
|
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
|
||||||
.\"
|
.\"
|
||||||
.Dd June 2, 2016
|
.Dd August 15, 2016
|
||||||
.Dt MAKE 1
|
.Dt MAKE 1
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
@ -927,6 +927,9 @@ The default list includes:
|
|||||||
.It Va .MAKE.META.IGNORE_PATTERNS
|
.It Va .MAKE.META.IGNORE_PATTERNS
|
||||||
Provides a list of patterns to match against pathnames.
|
Provides a list of patterns to match against pathnames.
|
||||||
Ignore any that match.
|
Ignore any that match.
|
||||||
|
.It Va .MAKE.META.IGNORE_FILTER
|
||||||
|
Provides a list of variable modifiers to apply to each pathname.
|
||||||
|
Ignore if the expansion is an empty string.
|
||||||
.It Va .MAKE.META.PREFIX
|
.It Va .MAKE.META.PREFIX
|
||||||
Defines the message printed for each meta file updated in "meta verbose" mode.
|
Defines the message printed for each meta file updated in "meta verbose" mode.
|
||||||
The default value is:
|
The default value is:
|
||||||
@ -974,7 +977,19 @@ per normal evaluation rules.
|
|||||||
.It Va MAKE_PRINT_VAR_ON_ERROR
|
.It Va MAKE_PRINT_VAR_ON_ERROR
|
||||||
When
|
When
|
||||||
.Nm
|
.Nm
|
||||||
stops due to an error, it prints its name and the value of
|
stops due to an error, it sets
|
||||||
|
.Ql Va .ERROR_TARGET
|
||||||
|
to the name of the target that failed,
|
||||||
|
.Ql Va .ERROR_CMD
|
||||||
|
to the commands of the failed target,
|
||||||
|
and in "meta" mode, it also sets
|
||||||
|
.Ql Va .ERROR_CWD
|
||||||
|
to the
|
||||||
|
.Xr getcwd 3 ,
|
||||||
|
and
|
||||||
|
.Ql Va .ERROR_META_FILE
|
||||||
|
to the path of the meta file (if any) describing the failed target.
|
||||||
|
It then prints its name and the value of
|
||||||
.Ql Va .CURDIR
|
.Ql Va .CURDIR
|
||||||
as well as the value of any variables named in
|
as well as the value of any variables named in
|
||||||
.Ql Va MAKE_PRINT_VAR_ON_ERROR .
|
.Ql Va MAKE_PRINT_VAR_ON_ERROR .
|
||||||
|
158
meta.c
158
meta.c
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: meta.c,v 1.61 2016/06/07 00:40:00 sjg Exp $ */
|
/* $NetBSD: meta.c,v 1.67 2016/08/17 15:52:42 sjg Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Implement 'meta' mode.
|
* Implement 'meta' mode.
|
||||||
@ -69,6 +69,9 @@ static char *metaIgnorePathsStr; /* string storage for the list */
|
|||||||
#ifndef MAKE_META_IGNORE_PATTERNS
|
#ifndef MAKE_META_IGNORE_PATTERNS
|
||||||
#define MAKE_META_IGNORE_PATTERNS ".MAKE.META.IGNORE_PATTERNS"
|
#define MAKE_META_IGNORE_PATTERNS ".MAKE.META.IGNORE_PATTERNS"
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef MAKE_META_IGNORE_FILTER
|
||||||
|
#define MAKE_META_IGNORE_FILTER ".MAKE.META.IGNORE_FILTER"
|
||||||
|
#endif
|
||||||
|
|
||||||
Boolean useMeta = FALSE;
|
Boolean useMeta = FALSE;
|
||||||
static Boolean useFilemon = FALSE;
|
static Boolean useFilemon = FALSE;
|
||||||
@ -79,6 +82,7 @@ static Boolean metaEnv = FALSE; /* don't save env unless asked */
|
|||||||
static Boolean metaVerbose = FALSE;
|
static Boolean metaVerbose = FALSE;
|
||||||
static Boolean metaIgnoreCMDs = FALSE; /* ignore CMDs in .meta files */
|
static Boolean metaIgnoreCMDs = FALSE; /* ignore CMDs in .meta files */
|
||||||
static Boolean metaIgnorePatterns = FALSE; /* do we need to do pattern matches */
|
static Boolean metaIgnorePatterns = FALSE; /* do we need to do pattern matches */
|
||||||
|
static Boolean metaIgnoreFilter = FALSE; /* do we have more complex filtering? */
|
||||||
static Boolean metaCurdirOk = FALSE; /* write .meta in .CURDIR Ok? */
|
static Boolean metaCurdirOk = FALSE; /* write .meta in .CURDIR Ok? */
|
||||||
static Boolean metaSilent = FALSE; /* if we have a .meta be SILENT */
|
static Boolean metaSilent = FALSE; /* if we have a .meta be SILENT */
|
||||||
|
|
||||||
@ -645,6 +649,11 @@ meta_mode_init(const char *make_mode)
|
|||||||
metaIgnorePatterns = TRUE;
|
metaIgnorePatterns = TRUE;
|
||||||
free(cp);
|
free(cp);
|
||||||
}
|
}
|
||||||
|
cp = NULL;
|
||||||
|
if (Var_Value(MAKE_META_IGNORE_FILTER, VAR_GLOBAL, &cp)) {
|
||||||
|
metaIgnoreFilter = TRUE;
|
||||||
|
free(cp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -869,6 +878,7 @@ fgetLine(char **bufp, size_t *szp, int o, FILE *fp)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Lst_ForEach wants 1 to stop search */
|
||||||
static int
|
static int
|
||||||
prefix_match(void *p, void *q)
|
prefix_match(void *p, void *q)
|
||||||
{
|
{
|
||||||
@ -879,6 +889,32 @@ prefix_match(void *p, void *q)
|
|||||||
return (0 == strncmp(path, prefix, n));
|
return (0 == strncmp(path, prefix, n));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* looking for exact or prefix/ match to
|
||||||
|
* Lst_Find wants 0 to stop search
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
path_match(const void *p, const void *q)
|
||||||
|
{
|
||||||
|
const char *prefix = q;
|
||||||
|
const char *path = p;
|
||||||
|
size_t n = strlen(prefix);
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
if ((rc = strncmp(path, prefix, n)) == 0) {
|
||||||
|
switch (path[n]) {
|
||||||
|
case '\0':
|
||||||
|
case '/':
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
rc = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lst_Find wants 0 to stop search */
|
||||||
static int
|
static int
|
||||||
string_match(const void *p, const void *q)
|
string_match(const void *p, const void *q)
|
||||||
{
|
{
|
||||||
@ -889,6 +925,67 @@ string_match(const void *p, const void *q)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static int
|
||||||
|
meta_ignore(GNode *gn, const char *p)
|
||||||
|
{
|
||||||
|
char fname[MAXPATHLEN];
|
||||||
|
|
||||||
|
if (p == NULL)
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
if (*p == '/') {
|
||||||
|
cached_realpath(p, fname); /* clean it up */
|
||||||
|
if (Lst_ForEach(metaIgnorePaths, prefix_match, fname)) {
|
||||||
|
#ifdef DEBUG_META_MODE
|
||||||
|
if (DEBUG(META))
|
||||||
|
fprintf(debug_file, "meta_oodate: ignoring path: %s\n",
|
||||||
|
p);
|
||||||
|
#endif
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (metaIgnorePatterns) {
|
||||||
|
char *pm;
|
||||||
|
|
||||||
|
snprintf(fname, sizeof(fname),
|
||||||
|
"${%s:@m@${%s:L:M$m}@}",
|
||||||
|
MAKE_META_IGNORE_PATTERNS, p);
|
||||||
|
pm = Var_Subst(NULL, fname, gn, VARF_WANTRES);
|
||||||
|
if (*pm) {
|
||||||
|
#ifdef DEBUG_META_MODE
|
||||||
|
if (DEBUG(META))
|
||||||
|
fprintf(debug_file, "meta_oodate: ignoring pattern: %s\n",
|
||||||
|
p);
|
||||||
|
#endif
|
||||||
|
free(pm);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
free(pm);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (metaIgnoreFilter) {
|
||||||
|
char *fm;
|
||||||
|
|
||||||
|
/* skip if filter result is empty */
|
||||||
|
snprintf(fname, sizeof(fname),
|
||||||
|
"${%s:L:${%s:ts:}}",
|
||||||
|
p, MAKE_META_IGNORE_FILTER);
|
||||||
|
fm = Var_Subst(NULL, fname, gn, VARF_WANTRES);
|
||||||
|
if (*fm == '\0') {
|
||||||
|
#ifdef DEBUG_META_MODE
|
||||||
|
if (DEBUG(META))
|
||||||
|
fprintf(debug_file, "meta_oodate: ignoring filtered: %s\n",
|
||||||
|
p);
|
||||||
|
#endif
|
||||||
|
free(fm);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
free(fm);
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* When running with 'meta' functionality, a target can be out-of-date
|
* When running with 'meta' functionality, a target can be out-of-date
|
||||||
* if any of the references in its meta data file is more recent.
|
* if any of the references in its meta data file is more recent.
|
||||||
@ -1170,12 +1267,19 @@ meta_oodate(GNode *gn, Boolean oodate)
|
|||||||
/* FALLTHROUGH */
|
/* FALLTHROUGH */
|
||||||
case 'D': /* unlink */
|
case 'D': /* unlink */
|
||||||
if (*p == '/' && !Lst_IsEmpty(missingFiles)) {
|
if (*p == '/' && !Lst_IsEmpty(missingFiles)) {
|
||||||
/* remove p from the missingFiles list if present */
|
/* remove any missingFiles entries that match p */
|
||||||
if ((ln = Lst_Find(missingFiles, p, string_match)) != NULL) {
|
if ((ln = Lst_Find(missingFiles, p,
|
||||||
char *tp = Lst_Datum(ln);
|
path_match)) != NULL) {
|
||||||
Lst_Remove(missingFiles, ln);
|
LstNode nln;
|
||||||
free(tp);
|
char *tp;
|
||||||
ln = NULL; /* we're done with it */
|
|
||||||
|
do {
|
||||||
|
nln = Lst_FindFrom(missingFiles, Lst_Succ(ln),
|
||||||
|
p, path_match);
|
||||||
|
tp = Lst_Datum(ln);
|
||||||
|
Lst_Remove(missingFiles, ln);
|
||||||
|
free(tp);
|
||||||
|
} while ((ln = nln) != NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (buf[0] == 'M') {
|
if (buf[0] == 'M') {
|
||||||
@ -1240,8 +1344,10 @@ meta_oodate(GNode *gn, Boolean oodate)
|
|||||||
|
|
||||||
if ((link_src != NULL && cached_lstat(p, &fs) < 0) ||
|
if ((link_src != NULL && cached_lstat(p, &fs) < 0) ||
|
||||||
(link_src == NULL && cached_stat(p, &fs) < 0)) {
|
(link_src == NULL && cached_stat(p, &fs) < 0)) {
|
||||||
if (Lst_Find(missingFiles, p, string_match) == NULL)
|
if (!meta_ignore(gn, p)) {
|
||||||
|
if (Lst_Find(missingFiles, p, string_match) == NULL)
|
||||||
Lst_AtEnd(missingFiles, bmake_strdup(p));
|
Lst_AtEnd(missingFiles, bmake_strdup(p));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
check_link_src:
|
check_link_src:
|
||||||
@ -1259,37 +1365,9 @@ meta_oodate(GNode *gn, Boolean oodate)
|
|||||||
* be part of the dependencies because
|
* be part of the dependencies because
|
||||||
* they are _expected_ to change.
|
* they are _expected_ to change.
|
||||||
*/
|
*/
|
||||||
if (*p == '/') {
|
if (meta_ignore(gn, p))
|
||||||
cached_realpath(p, fname1); /* clean it up */
|
break;
|
||||||
if (Lst_ForEach(metaIgnorePaths, prefix_match, fname1)) {
|
|
||||||
#ifdef DEBUG_META_MODE
|
|
||||||
if (DEBUG(META))
|
|
||||||
fprintf(debug_file, "meta_oodate: ignoring path: %s\n",
|
|
||||||
p);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (metaIgnorePatterns) {
|
|
||||||
char *pm;
|
|
||||||
|
|
||||||
snprintf(fname1, sizeof(fname1),
|
|
||||||
"${%s:@m@${%s:L:M$m}@}",
|
|
||||||
MAKE_META_IGNORE_PATTERNS, p);
|
|
||||||
pm = Var_Subst(NULL, fname1, gn, VARF_WANTRES);
|
|
||||||
if (*pm) {
|
|
||||||
#ifdef DEBUG_META_MODE
|
|
||||||
if (DEBUG(META))
|
|
||||||
fprintf(debug_file, "meta_oodate: ignoring pattern: %s\n",
|
|
||||||
p);
|
|
||||||
#endif
|
|
||||||
free(pm);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
free(pm);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The rest of the record is the file name.
|
* The rest of the record is the file name.
|
||||||
* Check if it's not an absolute path.
|
* Check if it's not an absolute path.
|
||||||
@ -1474,6 +1552,7 @@ meta_oodate(GNode *gn, Boolean oodate)
|
|||||||
if (DEBUG(META))
|
if (DEBUG(META))
|
||||||
fprintf(debug_file, "%s: required but missing\n", fname);
|
fprintf(debug_file, "%s: required but missing\n", fname);
|
||||||
oodate = TRUE;
|
oodate = TRUE;
|
||||||
|
needOODATE = TRUE; /* assume the worst */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1546,6 +1625,7 @@ meta_compat_parent(void)
|
|||||||
while (fgets(buf, sizeof(buf), fp)) {
|
while (fgets(buf, sizeof(buf), fp)) {
|
||||||
meta_job_output(NULL, buf, "");
|
meta_job_output(NULL, buf, "");
|
||||||
printf("%s", buf);
|
printf("%s", buf);
|
||||||
|
fflush(stdout);
|
||||||
}
|
}
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
31
mk/ChangeLog
31
mk/ChangeLog
@ -1,3 +1,34 @@
|
|||||||
|
2016-08-15 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||||
|
|
||||||
|
* install-mk (MK_VERSION): 20160815
|
||||||
|
|
||||||
|
* dirdeps.mk (.MAKE.META.IGNORE_FILTER): set filter to only
|
||||||
|
consider Makefile.depend* when checking if DIRDEPS_CACHE is up-to-date.
|
||||||
|
|
||||||
|
2016-08-13 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||||
|
|
||||||
|
* meta.sys.mk (.MAKE.META.IGNORE_PATHS):
|
||||||
|
in meta mode we can ignore the mtime of makefiles
|
||||||
|
|
||||||
|
2016-08-02 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||||
|
|
||||||
|
* install-mk (MK_VERSION): 20160802
|
||||||
|
|
||||||
|
* lib.mk (libinstall): depends on beforinstall
|
||||||
|
|
||||||
|
* prog.mk (proginstall): depends on beforinstall
|
||||||
|
patch from Lauri Tirkkonen
|
||||||
|
|
||||||
|
* dirdeps.mk (bootstrap): When bootstrapping; creat
|
||||||
|
.MAKE.DEPENDFILE_DEFAULT and allow additional filtering via
|
||||||
|
.MAKE.DEPENDFILE_BOOTSTRAP_SED
|
||||||
|
|
||||||
|
* dirdeps.mk: move some comments to where they make sense.
|
||||||
|
|
||||||
|
2016-07-27 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||||
|
|
||||||
|
* dirdeps.mk (DIRDEPS_CACHE): no dirname.
|
||||||
|
|
||||||
2016-06-02 Simon J. Gerraty <sjg@bad.crufty.net>
|
2016-06-02 Simon J. Gerraty <sjg@bad.crufty.net>
|
||||||
|
|
||||||
* install-mk (MK_VERSION): 20160602
|
* install-mk (MK_VERSION): 20160602
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# $Id: dirdeps.mk,v 1.67 2016/04/18 21:50:47 sjg Exp $
|
# $Id: dirdeps.mk,v 1.73 2016/08/15 19:28:13 sjg Exp $
|
||||||
|
|
||||||
# Copyright (c) 2010-2013, Juniper Networks, Inc.
|
# Copyright (c) 2010-2013, Juniper Networks, Inc.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
@ -116,12 +116,17 @@ _DIRDEP_USE_LEVEL?= 0
|
|||||||
.if ${.MAKE.LEVEL} == ${_DIRDEP_USE_LEVEL}
|
.if ${.MAKE.LEVEL} == ${_DIRDEP_USE_LEVEL}
|
||||||
# only the first instance is interested in all this
|
# only the first instance is interested in all this
|
||||||
|
|
||||||
# First off, we want to know what ${MACHINE} to build for.
|
|
||||||
# This can be complicated if we are using a mixture of ${MACHINE} specific
|
|
||||||
# and non-specific Makefile.depend*
|
|
||||||
|
|
||||||
.if !target(_DIRDEP_USE)
|
.if !target(_DIRDEP_USE)
|
||||||
|
|
||||||
|
# do some setup we only need once
|
||||||
|
_CURDIR ?= ${.CURDIR}
|
||||||
|
_OBJDIR ?= ${.OBJDIR}
|
||||||
|
|
||||||
|
now_utc = ${%s:L:gmtime}
|
||||||
|
.if !defined(start_utc)
|
||||||
|
start_utc := ${now_utc}
|
||||||
|
.endif
|
||||||
|
|
||||||
.if ${MAKEFILE:T} == ${.PARSEFILE} && empty(DIRDEPS) && ${.TARGETS:Uall:M*/*} != ""
|
.if ${MAKEFILE:T} == ${.PARSEFILE} && empty(DIRDEPS) && ${.TARGETS:Uall:M*/*} != ""
|
||||||
# This little trick let's us do
|
# This little trick let's us do
|
||||||
#
|
#
|
||||||
@ -144,15 +149,6 @@ MK_DIRDEPS_CACHE = no
|
|||||||
# make sure we get the behavior we expect
|
# make sure we get the behavior we expect
|
||||||
.MAKE.SAVE_DOLLARS = no
|
.MAKE.SAVE_DOLLARS = no
|
||||||
|
|
||||||
# do some setup we only need once
|
|
||||||
_CURDIR ?= ${.CURDIR}
|
|
||||||
_OBJDIR ?= ${.OBJDIR}
|
|
||||||
|
|
||||||
now_utc = ${%s:L:gmtime}
|
|
||||||
.if !defined(start_utc)
|
|
||||||
start_utc := ${now_utc}
|
|
||||||
.endif
|
|
||||||
|
|
||||||
# make sure these are empty to start with
|
# make sure these are empty to start with
|
||||||
_DEP_TARGET_SPEC =
|
_DEP_TARGET_SPEC =
|
||||||
|
|
||||||
@ -223,6 +219,10 @@ N_notmachine := ${.MAKE.DEPENDFILE_PREFERENCE:E:N*${MACHINE}*:${M_ListToSkip}}
|
|||||||
|
|
||||||
.endif # !target(_DIRDEP_USE)
|
.endif # !target(_DIRDEP_USE)
|
||||||
|
|
||||||
|
# First off, we want to know what ${MACHINE} to build for.
|
||||||
|
# This can be complicated if we are using a mixture of ${MACHINE} specific
|
||||||
|
# and non-specific Makefile.depend*
|
||||||
|
|
||||||
# if we were included recursively _DEP_TARGET_SPEC should be valid.
|
# if we were included recursively _DEP_TARGET_SPEC should be valid.
|
||||||
.if empty(_DEP_TARGET_SPEC)
|
.if empty(_DEP_TARGET_SPEC)
|
||||||
# we may or may not have included a dependfile yet
|
# we may or may not have included a dependfile yet
|
||||||
@ -385,7 +385,7 @@ BUILD_DIRDEPS ?= yes
|
|||||||
.if !defined(NO_DIRDEPS) && !defined(NO_DIRDEPS_BELOW)
|
.if !defined(NO_DIRDEPS) && !defined(NO_DIRDEPS_BELOW)
|
||||||
.if ${MK_DIRDEPS_CACHE} == "yes"
|
.if ${MK_DIRDEPS_CACHE} == "yes"
|
||||||
# this is where we will cache all our work
|
# this is where we will cache all our work
|
||||||
DIRDEPS_CACHE?= ${_OBJDIR}/dirdeps.cache${.TARGETS:Nall:O:u:ts-:S,/,_,g:S,^,.,:N.}
|
DIRDEPS_CACHE?= ${_OBJDIR:tA}/dirdeps.cache${.TARGETS:Nall:O:u:ts-:S,/,_,g:S,^,.,:N.}
|
||||||
|
|
||||||
# just ensure this exists
|
# just ensure this exists
|
||||||
build-dirdeps:
|
build-dirdeps:
|
||||||
@ -397,6 +397,9 @@ M_oneperline = @x@\\${.newline} $$x@
|
|||||||
# we do this via sub-make
|
# we do this via sub-make
|
||||||
BUILD_DIRDEPS = no
|
BUILD_DIRDEPS = no
|
||||||
|
|
||||||
|
# ignore anything but these
|
||||||
|
.MAKE.META.IGNORE_FILTER = M*/${.MAKE.DEPENDFILE_PREFIX}*
|
||||||
|
|
||||||
dirdeps: dirdeps-cached
|
dirdeps: dirdeps-cached
|
||||||
dirdeps-cached: ${DIRDEPS_CACHE} .MAKE
|
dirdeps-cached: ${DIRDEPS_CACHE} .MAKE
|
||||||
@echo "${TRACER}Using ${DIRDEPS_CACHE}"
|
@echo "${TRACER}Using ${DIRDEPS_CACHE}"
|
||||||
@ -669,7 +672,10 @@ _DEP_RELDIR := ${RELDIR}
|
|||||||
make(bootstrap-recurse) || \
|
make(bootstrap-recurse) || \
|
||||||
make(bootstrap-empty))
|
make(bootstrap-empty))
|
||||||
|
|
||||||
.if exists(${.CURDIR}/${.MAKE.DEPENDFILE:T})
|
# if we are bootstrapping create the default
|
||||||
|
_want = ${.CURDIR}/${.MAKE.DEPENDFILE_DEFAULT:T}
|
||||||
|
|
||||||
|
.if exists(${_want})
|
||||||
# stop here
|
# stop here
|
||||||
${.TARGETS:Mboot*}:
|
${.TARGETS:Mboot*}:
|
||||||
.elif !make(bootstrap-empty)
|
.elif !make(bootstrap-empty)
|
||||||
@ -679,12 +685,19 @@ _src != cd ${.CURDIR} && for m in ${.MAKE.DEPENDFILE_PREFERENCE:T:S,${MACHINE},*
|
|||||||
.error cannot find any of ${.MAKE.DEPENDFILE_PREFERENCE:T}${.newline}Use: bootstrap-empty
|
.error cannot find any of ${.MAKE.DEPENDFILE_PREFERENCE:T}${.newline}Use: bootstrap-empty
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
_src?= ${.MAKE.DEPENDFILE:T}
|
_src?= ${.MAKE.DEPENDFILE}
|
||||||
|
|
||||||
|
.MAKE.DEPENDFILE_BOOTSTRAP_SED+= -e 's,${_src:E},${MACHINE},g'
|
||||||
|
|
||||||
# just create Makefile.depend* for this dir
|
# just create Makefile.depend* for this dir
|
||||||
bootstrap-this: .NOTMAIN
|
bootstrap-this: .NOTMAIN
|
||||||
@echo Bootstrapping ${RELDIR}/${.MAKE.DEPENDFILE:T} from ${_src:T}
|
@echo Bootstrapping ${RELDIR}/${_want:T} from ${_src:T}; \
|
||||||
(cd ${.CURDIR} && sed 's,${_src:E},${MACHINE},g' ${_src} > ${.MAKE.DEPENDFILE:T})
|
echo You need to build ${RELDIR} to correctly populate it.
|
||||||
|
.if ${_src:T} != ${.MAKE.DEPENDFILE_PREFIX:T}
|
||||||
|
(cd ${.CURDIR} && sed ${.MAKE.DEPENDFILE_BOOTSTRAP_SED} ${_src} > ${_want})
|
||||||
|
.else
|
||||||
|
cp ${.CURDIR}/${_src} ${_want}
|
||||||
|
.endif
|
||||||
|
|
||||||
# create Makefile.depend* for this dir and its dependencies
|
# create Makefile.depend* for this dir and its dependencies
|
||||||
bootstrap: bootstrap-recurse
|
bootstrap: bootstrap-recurse
|
||||||
@ -704,8 +717,8 @@ bootstrap-recurse: .NOTMAIN .MAKE
|
|||||||
|
|
||||||
# create an empty Makefile.depend* to get the ball rolling.
|
# create an empty Makefile.depend* to get the ball rolling.
|
||||||
bootstrap-empty: .NOTMAIN .NOMETA
|
bootstrap-empty: .NOTMAIN .NOMETA
|
||||||
@echo Creating empty ${RELDIR}/${.MAKE.DEPENDFILE:T}; \
|
@echo Creating empty ${RELDIR}/${_want:T}; \
|
||||||
echo You need to build ${RELDIR} to correctly populate it.
|
echo You need to build ${RELDIR} to correctly populate it.
|
||||||
@{ echo DIRDEPS=; echo ".include <dirdeps.mk>"; } > ${.CURDIR}/${.MAKE.DEPENDFILE:T}
|
@{ echo DIRDEPS=; echo ".include <dirdeps.mk>"; } > ${_want}
|
||||||
|
|
||||||
.endif
|
.endif
|
||||||
|
@ -55,7 +55,7 @@
|
|||||||
# Simon J. Gerraty <sjg@crufty.net>
|
# Simon J. Gerraty <sjg@crufty.net>
|
||||||
|
|
||||||
# RCSid:
|
# RCSid:
|
||||||
# $Id: install-mk,v 1.128 2016/06/03 17:22:32 sjg Exp $
|
# $Id: install-mk,v 1.130 2016/08/15 19:28:13 sjg Exp $
|
||||||
#
|
#
|
||||||
# @(#) Copyright (c) 1994 Simon J. Gerraty
|
# @(#) Copyright (c) 1994 Simon J. Gerraty
|
||||||
#
|
#
|
||||||
@ -70,7 +70,7 @@
|
|||||||
# sjg@crufty.net
|
# sjg@crufty.net
|
||||||
#
|
#
|
||||||
|
|
||||||
MK_VERSION=20160602
|
MK_VERSION=20160815
|
||||||
OWNER=
|
OWNER=
|
||||||
GROUP=
|
GROUP=
|
||||||
MODE=444
|
MODE=444
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# $Id: lib.mk,v 1.53 2016/03/22 20:45:14 sjg Exp $
|
# $Id: lib.mk,v 1.54 2016/08/02 20:52:17 sjg Exp $
|
||||||
|
|
||||||
.if !target(__${.PARSEFILE}__)
|
.if !target(__${.PARSEFILE}__)
|
||||||
__${.PARSEFILE}__:
|
__${.PARSEFILE}__:
|
||||||
@ -564,6 +564,7 @@ libinstall:
|
|||||||
install: maninstall _SUBDIRUSE
|
install: maninstall _SUBDIRUSE
|
||||||
maninstall: afterinstall
|
maninstall: afterinstall
|
||||||
afterinstall: realinstall
|
afterinstall: realinstall
|
||||||
|
libinstall: beforeinstall
|
||||||
realinstall: beforeinstall
|
realinstall: beforeinstall
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# $Id: meta.sys.mk,v 1.28 2016/04/05 15:58:37 sjg Exp $
|
# $Id: meta.sys.mk,v 1.29 2016/08/13 17:51:45 sjg Exp $
|
||||||
|
|
||||||
#
|
#
|
||||||
# @(#) Copyright (c) 2010, Simon J. Gerraty
|
# @(#) Copyright (c) 2010, Simon J. Gerraty
|
||||||
@ -25,6 +25,10 @@
|
|||||||
# absoulte path to what we are reading.
|
# absoulte path to what we are reading.
|
||||||
_PARSEDIR = ${.PARSEDIR:tA}
|
_PARSEDIR = ${.PARSEDIR:tA}
|
||||||
|
|
||||||
|
.if !defined(SYS_MK_DIR)
|
||||||
|
SYS_MK_DIR := ${_PARSEDIR}
|
||||||
|
.endif
|
||||||
|
|
||||||
META_MODE += meta verbose
|
META_MODE += meta verbose
|
||||||
.MAKE.MODE ?= ${META_MODE}
|
.MAKE.MODE ?= ${META_MODE}
|
||||||
|
|
||||||
@ -119,6 +123,15 @@ MKDEP_MK = meta.autodep.mk
|
|||||||
# re-running needlessly
|
# re-running needlessly
|
||||||
META_COOKIE_TOUCH= touch ${COOKIE.${.TARGET}:U${.OBJDIR}/${.TARGET}}
|
META_COOKIE_TOUCH= touch ${COOKIE.${.TARGET}:U${.OBJDIR}/${.TARGET}}
|
||||||
META_NOPHONY=
|
META_NOPHONY=
|
||||||
|
|
||||||
|
# some targets involve old pre-built targets
|
||||||
|
# ignore mtime of shell
|
||||||
|
# and mtime of makefiles does not matter in meta mode
|
||||||
|
.MAKE.META.IGNORE_PATHS += \
|
||||||
|
${MAKEFILE} \
|
||||||
|
${SHELL} \
|
||||||
|
${SYS_MK_DIR}
|
||||||
|
|
||||||
.if ${UPDATE_DEPENDFILE:Uyes:tl} != "no"
|
.if ${UPDATE_DEPENDFILE:Uyes:tl} != "no"
|
||||||
.if ${.MAKEFLAGS:Uno:M-k} != ""
|
.if ${.MAKEFLAGS:Uno:M-k} != ""
|
||||||
# make this more obvious
|
# make this more obvious
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# $Id: prog.mk,v 1.26 2016/03/22 20:45:14 sjg Exp $
|
# $Id: prog.mk,v 1.27 2016/08/02 20:52:17 sjg Exp $
|
||||||
|
|
||||||
.if !target(__${.PARSEFILE}__)
|
.if !target(__${.PARSEFILE}__)
|
||||||
__${.PARSEFILE}__:
|
__${.PARSEFILE}__:
|
||||||
@ -191,6 +191,7 @@ install_links:
|
|||||||
|
|
||||||
maninstall: afterinstall
|
maninstall: afterinstall
|
||||||
afterinstall: realinstall
|
afterinstall: realinstall
|
||||||
|
proginstall: beforeinstall
|
||||||
realinstall: beforeinstall
|
realinstall: beforeinstall
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
|
7
os.sh
7
os.sh
@ -17,7 +17,7 @@
|
|||||||
# Simon J. Gerraty <sjg@crufty.net>
|
# Simon J. Gerraty <sjg@crufty.net>
|
||||||
|
|
||||||
# RCSid:
|
# RCSid:
|
||||||
# $Id: os.sh,v 1.50 2015/12/17 17:06:29 sjg Exp $
|
# $Id: os.sh,v 1.52 2016/06/17 05:15:14 sjg Exp $
|
||||||
#
|
#
|
||||||
# @(#) Copyright (c) 1994 Simon J. Gerraty
|
# @(#) Copyright (c) 1994 Simon J. Gerraty
|
||||||
#
|
#
|
||||||
@ -139,7 +139,7 @@ SunOS)
|
|||||||
case $OS in
|
case $OS in
|
||||||
NetBSD)
|
NetBSD)
|
||||||
HOST_ARCH=$MACHINE
|
HOST_ARCH=$MACHINE
|
||||||
SHARE_ARCH=$OS/$HOST
|
SHARE_ARCH=$OS/$HOST_ARCH
|
||||||
;;
|
;;
|
||||||
OpenBSD)
|
OpenBSD)
|
||||||
arch=`Which arch /usr/bin:/usr/ucb:$PATH`
|
arch=`Which arch /usr/bin:/usr/ucb:$PATH`
|
||||||
@ -208,7 +208,8 @@ TMP_DIRS=${TMP_DIRS:-"/tmp /var/tmp"}
|
|||||||
MACHINE_ARCH=${MACHINE_ARCH:-$MACHINE}
|
MACHINE_ARCH=${MACHINE_ARCH:-$MACHINE}
|
||||||
HOST_ARCH=${HOST_ARCH:-$MACHINE_ARCH}
|
HOST_ARCH=${HOST_ARCH:-$MACHINE_ARCH}
|
||||||
# we mount server:/share/arch/$SHARE_ARCH as /usr/local
|
# we mount server:/share/arch/$SHARE_ARCH as /usr/local
|
||||||
SHARE_ARCH=${SHARE_ARCH:-$OS/$OSMAJOR.X/$HOST_ARCH}
|
SHARE_ARCH_DEFAULT=$OS/$OSMAJOR.X/$HOST_ARCH
|
||||||
|
SHARE_ARCH=${SHARE_ARCH:-$SHARE_ARCH_DEFAULT}
|
||||||
LN=${LN:-ln}
|
LN=${LN:-ln}
|
||||||
TR=${TR:-tr}
|
TR=${TR:-tr}
|
||||||
|
|
||||||
|
44
suff.c
44
suff.c
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: suff.c,v 1.81 2016/03/15 18:30:14 matthias Exp $ */
|
/* $NetBSD: suff.c,v 1.84 2016/06/30 05:34:04 dholland Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -69,14 +69,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: suff.c,v 1.81 2016/03/15 18:30:14 matthias Exp $";
|
static char rcsid[] = "$NetBSD: suff.c,v 1.84 2016/06/30 05:34:04 dholland Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)suff.c 8.4 (Berkeley) 3/21/94";
|
static char sccsid[] = "@(#)suff.c 8.4 (Berkeley) 3/21/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: suff.c,v 1.81 2016/03/15 18:30:14 matthias Exp $");
|
__RCSID("$NetBSD: suff.c,v 1.84 2016/06/30 05:34:04 dholland Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -766,6 +766,8 @@ Suff_EndTransform(void *gnp, void *dummy)
|
|||||||
{
|
{
|
||||||
GNode *gn = (GNode *)gnp;
|
GNode *gn = (GNode *)gnp;
|
||||||
|
|
||||||
|
(void)dummy;
|
||||||
|
|
||||||
if ((gn->type & OP_DOUBLEDEP) && !Lst_IsEmpty (gn->cohorts))
|
if ((gn->type & OP_DOUBLEDEP) && !Lst_IsEmpty (gn->cohorts))
|
||||||
gn = (GNode *)Lst_Datum(Lst_Last(gn->cohorts));
|
gn = (GNode *)Lst_Datum(Lst_Last(gn->cohorts));
|
||||||
if ((gn->type & OP_TRANSFORM) && Lst_IsEmpty(gn->commands) &&
|
if ((gn->type & OP_TRANSFORM) && Lst_IsEmpty(gn->commands) &&
|
||||||
@ -809,7 +811,7 @@ Suff_EndTransform(void *gnp, void *dummy)
|
|||||||
fprintf(debug_file, "transformation %s complete\n", gn->name);
|
fprintf(debug_file, "transformation %s complete\n", gn->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
return(dummy ? 0 : 0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1215,7 +1217,7 @@ SuffAddSrc(void *sp, void *lsp)
|
|||||||
#ifdef DEBUG_SRC
|
#ifdef DEBUG_SRC
|
||||||
s2->cp = Lst_Init(FALSE);
|
s2->cp = Lst_Init(FALSE);
|
||||||
Lst_AtEnd(targ->cp, s2);
|
Lst_AtEnd(targ->cp, s2);
|
||||||
fprintf(debug_file, "1 add %x %x to %x:", targ, s2, ls->l);
|
fprintf(debug_file, "1 add %p %p to %p:", targ, s2, ls->l);
|
||||||
Lst_ForEach(ls->l, PrintAddr, NULL);
|
Lst_ForEach(ls->l, PrintAddr, NULL);
|
||||||
fprintf(debug_file, "\n");
|
fprintf(debug_file, "\n");
|
||||||
#endif
|
#endif
|
||||||
@ -1233,7 +1235,7 @@ SuffAddSrc(void *sp, void *lsp)
|
|||||||
#ifdef DEBUG_SRC
|
#ifdef DEBUG_SRC
|
||||||
s2->cp = Lst_Init(FALSE);
|
s2->cp = Lst_Init(FALSE);
|
||||||
Lst_AtEnd(targ->cp, s2);
|
Lst_AtEnd(targ->cp, s2);
|
||||||
fprintf(debug_file, "2 add %x %x to %x:", targ, s2, ls->l);
|
fprintf(debug_file, "2 add %p %p to %p:", targ, s2, ls->l);
|
||||||
Lst_ForEach(ls->l, PrintAddr, NULL);
|
Lst_ForEach(ls->l, PrintAddr, NULL);
|
||||||
fprintf(debug_file, "\n");
|
fprintf(debug_file, "\n");
|
||||||
#endif
|
#endif
|
||||||
@ -1305,14 +1307,14 @@ SuffRemoveSrc(Lst l)
|
|||||||
free(s->pref);
|
free(s->pref);
|
||||||
else {
|
else {
|
||||||
#ifdef DEBUG_SRC
|
#ifdef DEBUG_SRC
|
||||||
LstNode ln = Lst_Member(s->parent->cp, s);
|
LstNode ln2 = Lst_Member(s->parent->cp, s);
|
||||||
if (ln != NULL)
|
if (ln2 != NULL)
|
||||||
Lst_Remove(s->parent->cp, ln);
|
Lst_Remove(s->parent->cp, ln2);
|
||||||
#endif
|
#endif
|
||||||
--s->parent->children;
|
--s->parent->children;
|
||||||
}
|
}
|
||||||
#ifdef DEBUG_SRC
|
#ifdef DEBUG_SRC
|
||||||
fprintf(debug_file, "free: [l=%x] p=%x %d\n", l, s, s->children);
|
fprintf(debug_file, "free: [l=%p] p=%p %d\n", l, s, s->children);
|
||||||
Lst_Destroy(s->cp, NULL);
|
Lst_Destroy(s->cp, NULL);
|
||||||
#endif
|
#endif
|
||||||
Lst_Remove(l, ln);
|
Lst_Remove(l, ln);
|
||||||
@ -1323,7 +1325,7 @@ SuffRemoveSrc(Lst l)
|
|||||||
}
|
}
|
||||||
#ifdef DEBUG_SRC
|
#ifdef DEBUG_SRC
|
||||||
else {
|
else {
|
||||||
fprintf(debug_file, "keep: [l=%x] p=%x %d: ", l, s, s->children);
|
fprintf(debug_file, "keep: [l=%p] p=%p %d: ", l, s, s->children);
|
||||||
Lst_ForEach(s->cp, PrintAddr, NULL);
|
Lst_ForEach(s->cp, PrintAddr, NULL);
|
||||||
fprintf(debug_file, "\n");
|
fprintf(debug_file, "\n");
|
||||||
}
|
}
|
||||||
@ -1372,7 +1374,7 @@ SuffFindThem(Lst srcs, Lst slst)
|
|||||||
*/
|
*/
|
||||||
if (Targ_FindNode(s->file, TARG_NOCREATE) != NULL) {
|
if (Targ_FindNode(s->file, TARG_NOCREATE) != NULL) {
|
||||||
#ifdef DEBUG_SRC
|
#ifdef DEBUG_SRC
|
||||||
fprintf(debug_file, "remove %x from %x\n", s, srcs);
|
fprintf(debug_file, "remove %p from %p\n", s, srcs);
|
||||||
#endif
|
#endif
|
||||||
rs = s;
|
rs = s;
|
||||||
break;
|
break;
|
||||||
@ -1381,7 +1383,7 @@ SuffFindThem(Lst srcs, Lst slst)
|
|||||||
if ((ptr = Dir_FindFile(s->file, s->suff->searchPath)) != NULL) {
|
if ((ptr = Dir_FindFile(s->file, s->suff->searchPath)) != NULL) {
|
||||||
rs = s;
|
rs = s;
|
||||||
#ifdef DEBUG_SRC
|
#ifdef DEBUG_SRC
|
||||||
fprintf(debug_file, "remove %x from %x\n", s, srcs);
|
fprintf(debug_file, "remove %p from %p\n", s, srcs);
|
||||||
#endif
|
#endif
|
||||||
free(ptr);
|
free(ptr);
|
||||||
break;
|
break;
|
||||||
@ -1497,7 +1499,7 @@ SuffFindCmds(Src *targ, Lst slst)
|
|||||||
targ->children += 1;
|
targ->children += 1;
|
||||||
#ifdef DEBUG_SRC
|
#ifdef DEBUG_SRC
|
||||||
ret->cp = Lst_Init(FALSE);
|
ret->cp = Lst_Init(FALSE);
|
||||||
fprintf(debug_file, "3 add %x %x\n", targ, ret);
|
fprintf(debug_file, "3 add %p %p\n", targ, ret);
|
||||||
Lst_AtEnd(targ->cp, ret);
|
Lst_AtEnd(targ->cp, ret);
|
||||||
#endif
|
#endif
|
||||||
Lst_AtEnd(slst, ret);
|
Lst_AtEnd(slst, ret);
|
||||||
@ -1616,7 +1618,7 @@ SuffExpandChildren(LstNode cln, GNode *pgn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
free(freeIt);
|
free(freeIt);
|
||||||
} else if (*cp == '\\' && *cp != '\0') {
|
} else if (*cp == '\\' && cp[1] != '\0') {
|
||||||
/*
|
/*
|
||||||
* Escaped something -- skip over it
|
* Escaped something -- skip over it
|
||||||
*/
|
*/
|
||||||
@ -2597,8 +2599,10 @@ Suff_End(void)
|
|||||||
|
|
||||||
static int SuffPrintName(void *s, void *dummy)
|
static int SuffPrintName(void *s, void *dummy)
|
||||||
{
|
{
|
||||||
|
(void)dummy;
|
||||||
|
|
||||||
fprintf(debug_file, "%s ", ((Suff *)s)->name);
|
fprintf(debug_file, "%s ", ((Suff *)s)->name);
|
||||||
return (dummy ? 0 : 0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -2608,6 +2612,8 @@ SuffPrintSuff(void *sp, void *dummy)
|
|||||||
int flags;
|
int flags;
|
||||||
int flag;
|
int flag;
|
||||||
|
|
||||||
|
(void)dummy;
|
||||||
|
|
||||||
fprintf(debug_file, "# `%s' [%d] ", s->name, s->refCount);
|
fprintf(debug_file, "# `%s' [%d] ", s->name, s->refCount);
|
||||||
|
|
||||||
flags = s->flags;
|
flags = s->flags;
|
||||||
@ -2640,7 +2646,7 @@ SuffPrintSuff(void *sp, void *dummy)
|
|||||||
fprintf(debug_file, "#\tSearch Path: ");
|
fprintf(debug_file, "#\tSearch Path: ");
|
||||||
Dir_PrintPath(s->searchPath);
|
Dir_PrintPath(s->searchPath);
|
||||||
fputc('\n', debug_file);
|
fputc('\n', debug_file);
|
||||||
return (dummy ? 0 : 0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
@ -2648,12 +2654,14 @@ SuffPrintTrans(void *tp, void *dummy)
|
|||||||
{
|
{
|
||||||
GNode *t = (GNode *)tp;
|
GNode *t = (GNode *)tp;
|
||||||
|
|
||||||
|
(void)dummy;
|
||||||
|
|
||||||
fprintf(debug_file, "%-16s: ", t->name);
|
fprintf(debug_file, "%-16s: ", t->name);
|
||||||
Targ_PrintType(t->type);
|
Targ_PrintType(t->type);
|
||||||
fputc('\n', debug_file);
|
fputc('\n', debug_file);
|
||||||
Lst_ForEach(t->commands, Targ_PrintCmd, NULL);
|
Lst_ForEach(t->commands, Targ_PrintCmd, NULL);
|
||||||
fputc('\n', debug_file);
|
fputc('\n', debug_file);
|
||||||
return(dummy ? 0 : 0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user