Update to bmake-20200704
Key changes include reduced noise at end of failed build log and avoid evaluation of unnecessary terms in conditionals. MFC after: 1 week
This commit is contained in:
commit
2d147b4741
@ -1,3 +1,81 @@
|
|||||||
|
2020-07-04 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* VERSION (_MAKE_VERSION): 20200704
|
||||||
|
Merge with NetBSD make, pick up
|
||||||
|
(most of this by rillig@)
|
||||||
|
o lots of style and white-space cleanup
|
||||||
|
o lots more unit tests for variable modifiers
|
||||||
|
o simplified description of some functions
|
||||||
|
o str.c: refactor Str_Match
|
||||||
|
o var.c: debugging output for :@
|
||||||
|
constify VarModify parameter
|
||||||
|
fix :hash modifier on 16-bit platforms
|
||||||
|
remove unnecessary forward declarations
|
||||||
|
refactor ApplyModifier_SysV to have less indentation
|
||||||
|
simplify code for :E and :R
|
||||||
|
clean up code for :H and :T
|
||||||
|
refactor ApplyModifiers
|
||||||
|
|
||||||
|
* var.c: we need stdint.h on some platforms to get uint32_t
|
||||||
|
* unit-test/Makefile: we need to supress the specific error
|
||||||
|
for RE substitution error in modmisc, since it varies accross
|
||||||
|
different OS.
|
||||||
|
|
||||||
|
2020-07-02 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* VERSION (_MAKE_VERSION): 20200702
|
||||||
|
Merge with NetBSD make, pick up
|
||||||
|
o var.c: more improvements to avoiding unnecessary evaluation
|
||||||
|
use enums for flags
|
||||||
|
o remove flags arg to Var_Set which outside of var.c is always 0
|
||||||
|
|
||||||
|
2020-07-01 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* VERSION (_MAKE_VERSION): 20200701
|
||||||
|
Merge with NetBSD make, pick up
|
||||||
|
o var.c: with change to cond.c; ensure that nested variables
|
||||||
|
within a variable name are expanded.
|
||||||
|
o unit-tests/varmisc.mk: test for nested varname
|
||||||
|
|
||||||
|
2020-06-29 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* VERSION (_MAKE_VERSION): 20200629
|
||||||
|
Merge with NetBSD make, pick up
|
||||||
|
o cond.c: do not eval unnecessary terms of conditionals.
|
||||||
|
|
||||||
|
2020-06-25 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* VERSION (_MAKE_VERSION): 20200625
|
||||||
|
Merge with NetBSD make, pick up
|
||||||
|
o meta.c: report error if lseek in filemon_read fails
|
||||||
|
|
||||||
|
2020-06-22 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* VERSION (_MAKE_VERSION): 20200622
|
||||||
|
Merge with NetBSD make, pick up
|
||||||
|
o dieQuietly: ignore OP_SUBMAKE as too aggressive
|
||||||
|
|
||||||
|
2020-06-19 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* VERSION (_MAKE_VERSION): 20200619
|
||||||
|
Merge with NetBSD make, pick up
|
||||||
|
o str.c: performance improvement for Str_Match for multiple '*'
|
||||||
|
o dieQuietly: supress the failure output from make
|
||||||
|
when failing node is a sub-make or a sibling failed.
|
||||||
|
This cuts down greatly on unhelpful noise at the end of
|
||||||
|
build log. Disabled by -dj or .MAKE.DIE_QUIETLY=no
|
||||||
|
|
||||||
|
2020-06-10 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* FILES: add LICENSE to appease some packagers.
|
||||||
|
This is an attempt to fairly represent the license on almost
|
||||||
|
200 files, which are almost all BSD-3-Clause
|
||||||
|
The few exceptions being more liberal.
|
||||||
|
|
||||||
|
* VERSION (_MAKE_VERSION): 20200610
|
||||||
|
Merge with NetBSD make, pick up
|
||||||
|
o unit test for :Or
|
||||||
|
|
||||||
2020-06-06 Simon J Gerraty <sjg@beast.crufty.net>
|
2020-06-06 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
* VERSION (_MAKE_VERSION): 20200606
|
* VERSION (_MAKE_VERSION): 20200606
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
ChangeLog
|
ChangeLog
|
||||||
FILES
|
FILES
|
||||||
|
LICENSE
|
||||||
Makefile
|
Makefile
|
||||||
Makefile.config.in
|
Makefile.config.in
|
||||||
PSD.doc/Makefile
|
PSD.doc/Makefile
|
||||||
@ -107,6 +108,8 @@ unit-tests/cond2.exp
|
|||||||
unit-tests/cond2.mk
|
unit-tests/cond2.mk
|
||||||
unit-tests/cond-late.mk
|
unit-tests/cond-late.mk
|
||||||
unit-tests/cond-late.exp
|
unit-tests/cond-late.exp
|
||||||
|
unit-tests/cond-short.mk
|
||||||
|
unit-tests/cond-short.exp
|
||||||
unit-tests/dollar.exp
|
unit-tests/dollar.exp
|
||||||
unit-tests/dollar.mk
|
unit-tests/dollar.mk
|
||||||
unit-tests/doterror.exp
|
unit-tests/doterror.exp
|
||||||
|
59
contrib/bmake/LICENSE
Normal file
59
contrib/bmake/LICENSE
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
The individual files in this distribution are copyright their
|
||||||
|
original contributors or assignees.
|
||||||
|
Including:
|
||||||
|
|
||||||
|
Copyright (c) 1993-2020, Simon J Gerraty
|
||||||
|
Copyright (c) 2009-2016, Juniper Networks, Inc.
|
||||||
|
Copyright (c) 2009, John Birrell.
|
||||||
|
Copyright (c) 1997-2020 The NetBSD Foundation, Inc.
|
||||||
|
Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
|
||||||
|
Copyright (c) 1989 by Berkeley Softworks
|
||||||
|
Copyright (c) 1988, 1989, 1990, 1992, 1993
|
||||||
|
The Regents of the University of California.
|
||||||
|
Copyright (c) 1988, 1989 by Adam de Boor
|
||||||
|
|
||||||
|
With the exception of the GNU configure script, which states:
|
||||||
|
|
||||||
|
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
|
||||||
|
#
|
||||||
|
# This configure script is free software; the Free Software Foundation
|
||||||
|
# gives unlimited permission to copy, distribute and modify it.
|
||||||
|
|
||||||
|
The license for this distribution is considered to be:
|
||||||
|
|
||||||
|
SPDX-License-Identifier: BSD-3-Clause
|
||||||
|
|
||||||
|
example (from https://opensource.org/licenses/BSD-3-Clause):
|
||||||
|
|
||||||
|
Copyright <YEAR> <COPYRIGHT HOLDER>
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions
|
||||||
|
are met:
|
||||||
|
|
||||||
|
1. Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
2. Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the following
|
||||||
|
disclaimer in the documentation and/or other materials provided
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
3. Neither the name of the copyright holder nor the names of its
|
||||||
|
contributors may be used to endorse or promote products derived
|
||||||
|
from this software without specific prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
|
||||||
|
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
|
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
|
||||||
|
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
|
||||||
|
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
|
||||||
|
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||||
|
THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||||
|
SUCH DAMAGE.
|
||||||
|
|
@ -1,2 +1,2 @@
|
|||||||
# keep this compatible with sh and make
|
# keep this compatible with sh and make
|
||||||
_MAKE_VERSION=20200606
|
_MAKE_VERSION=20200704
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: arch.c,v 1.71 2019/10/05 23:35:57 mrg Exp $ */
|
/* $NetBSD: arch.c,v 1.73 2020/07/03 08:02:55 rillig 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: arch.c,v 1.71 2019/10/05 23:35:57 mrg Exp $";
|
static char rcsid[] = "$NetBSD: arch.c,v 1.73 2020/07/03 08:02:55 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)arch.c 8.2 (Berkeley) 1/2/94";
|
static char sccsid[] = "@(#)arch.c 8.2 (Berkeley) 1/2/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: arch.c,v 1.71 2019/10/05 23:35:57 mrg Exp $");
|
__RCSID("$NetBSD: arch.c,v 1.73 2020/07/03 08:02:55 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -312,7 +312,7 @@ Arch_ParseArchive(char **linePtr, Lst nodeLst, GNode *ctxt)
|
|||||||
free(freeIt);
|
free(freeIt);
|
||||||
|
|
||||||
if (result == var_Error) {
|
if (result == var_Error) {
|
||||||
return(FAILURE);
|
return FAILURE;
|
||||||
} else {
|
} else {
|
||||||
subLibName = TRUE;
|
subLibName = TRUE;
|
||||||
}
|
}
|
||||||
@ -354,7 +354,7 @@ Arch_ParseArchive(char **linePtr, Lst nodeLst, GNode *ctxt)
|
|||||||
free(freeIt);
|
free(freeIt);
|
||||||
|
|
||||||
if (result == var_Error) {
|
if (result == var_Error) {
|
||||||
return(FAILURE);
|
return FAILURE;
|
||||||
} else {
|
} else {
|
||||||
doSubst = TRUE;
|
doSubst = TRUE;
|
||||||
}
|
}
|
||||||
@ -372,7 +372,7 @@ Arch_ParseArchive(char **linePtr, Lst nodeLst, GNode *ctxt)
|
|||||||
*/
|
*/
|
||||||
if (*cp == '\0') {
|
if (*cp == '\0') {
|
||||||
printf("No closing parenthesis in archive specification\n");
|
printf("No closing parenthesis in archive specification\n");
|
||||||
return (FAILURE);
|
return FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -426,7 +426,7 @@ Arch_ParseArchive(char **linePtr, Lst nodeLst, GNode *ctxt)
|
|||||||
|
|
||||||
if (gn == NULL) {
|
if (gn == NULL) {
|
||||||
free(buf);
|
free(buf);
|
||||||
return(FAILURE);
|
return FAILURE;
|
||||||
} else {
|
} else {
|
||||||
gn->type |= OP_ARCHV;
|
gn->type |= OP_ARCHV;
|
||||||
(void)Lst_AtEnd(nodeLst, gn);
|
(void)Lst_AtEnd(nodeLst, gn);
|
||||||
@ -437,7 +437,7 @@ Arch_ParseArchive(char **linePtr, Lst nodeLst, GNode *ctxt)
|
|||||||
* ourselves.
|
* ourselves.
|
||||||
*/
|
*/
|
||||||
free(buf);
|
free(buf);
|
||||||
return(FAILURE);
|
return FAILURE;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Free buffer and continue with our work.
|
* Free buffer and continue with our work.
|
||||||
@ -461,7 +461,7 @@ Arch_ParseArchive(char **linePtr, Lst nodeLst, GNode *ctxt)
|
|||||||
gn = Targ_FindNode(nameBuf, TARG_CREATE);
|
gn = Targ_FindNode(nameBuf, TARG_CREATE);
|
||||||
if (gn == NULL) {
|
if (gn == NULL) {
|
||||||
free(nameBuf);
|
free(nameBuf);
|
||||||
return (FAILURE);
|
return FAILURE;
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* We've found the node, but have to make sure the rest of
|
* We've found the node, but have to make sure the rest of
|
||||||
@ -483,7 +483,7 @@ Arch_ParseArchive(char **linePtr, Lst nodeLst, GNode *ctxt)
|
|||||||
gn = Targ_FindNode(nameBuf, TARG_CREATE);
|
gn = Targ_FindNode(nameBuf, TARG_CREATE);
|
||||||
free(nameBuf);
|
free(nameBuf);
|
||||||
if (gn == NULL) {
|
if (gn == NULL) {
|
||||||
return (FAILURE);
|
return FAILURE;
|
||||||
} else {
|
} else {
|
||||||
/*
|
/*
|
||||||
* We've found the node, but have to make sure the rest of the
|
* We've found the node, but have to make sure the rest of the
|
||||||
@ -520,7 +520,7 @@ Arch_ParseArchive(char **linePtr, Lst nodeLst, GNode *ctxt)
|
|||||||
} while (*cp != '\0' && isspace ((unsigned char)*cp));
|
} while (*cp != '\0' && isspace ((unsigned char)*cp));
|
||||||
|
|
||||||
*linePtr = cp;
|
*linePtr = cp;
|
||||||
return (SUCCESS);
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -544,7 +544,7 @@ Arch_ParseArchive(char **linePtr, Lst nodeLst, GNode *ctxt)
|
|||||||
static int
|
static int
|
||||||
ArchFindArchive(const void *ar, const void *archName)
|
ArchFindArchive(const void *ar, const void *archName)
|
||||||
{
|
{
|
||||||
return (strcmp(archName, ((const Arch *)ar)->name));
|
return strcmp(archName, ((const Arch *)ar)->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -602,7 +602,7 @@ ArchStatMember(char *archive, char *member, Boolean hash)
|
|||||||
he = Hash_FindEntry(&ar->members, member);
|
he = Hash_FindEntry(&ar->members, member);
|
||||||
|
|
||||||
if (he != NULL) {
|
if (he != NULL) {
|
||||||
return ((struct ar_hdr *)Hash_GetValue(he));
|
return (struct ar_hdr *)Hash_GetValue(he);
|
||||||
} else {
|
} else {
|
||||||
/* Try truncated name */
|
/* Try truncated name */
|
||||||
char copy[AR_MAX_NAME_LEN+1];
|
char copy[AR_MAX_NAME_LEN+1];
|
||||||
@ -614,7 +614,7 @@ ArchStatMember(char *archive, char *member, Boolean hash)
|
|||||||
copy[AR_MAX_NAME_LEN] = '\0';
|
copy[AR_MAX_NAME_LEN] = '\0';
|
||||||
}
|
}
|
||||||
if ((he = Hash_FindEntry(&ar->members, copy)) != NULL)
|
if ((he = Hash_FindEntry(&ar->members, copy)) != NULL)
|
||||||
return ((struct ar_hdr *)Hash_GetValue(he));
|
return (struct ar_hdr *)Hash_GetValue(he);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -635,7 +635,7 @@ ArchStatMember(char *archive, char *member, Boolean hash)
|
|||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
fclose(arch);
|
fclose(arch);
|
||||||
return (&sarh);
|
return &sarh;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -753,7 +753,7 @@ ArchStatMember(char *archive, char *member, Boolean hash)
|
|||||||
he = Hash_FindEntry(&ar->members, member);
|
he = Hash_FindEntry(&ar->members, member);
|
||||||
|
|
||||||
if (he != NULL) {
|
if (he != NULL) {
|
||||||
return ((struct ar_hdr *)Hash_GetValue(he));
|
return (struct ar_hdr *)Hash_GetValue(he);
|
||||||
} else {
|
} else {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -962,7 +962,7 @@ ArchFindMember(char *archive, char *member, struct ar_hdr *arhPtr,
|
|||||||
fclose(arch);
|
fclose(arch);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return (arch);
|
return arch;
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
#ifdef AR_EFMT1
|
#ifdef AR_EFMT1
|
||||||
@ -996,7 +996,7 @@ ArchFindMember(char *archive, char *member, struct ar_hdr *arhPtr,
|
|||||||
fclose(arch);
|
fclose(arch);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
return (arch);
|
return arch;
|
||||||
}
|
}
|
||||||
if (fseek(arch, -elen, SEEK_CUR) != 0) {
|
if (fseek(arch, -elen, SEEK_CUR) != 0) {
|
||||||
fclose(arch);
|
fclose(arch);
|
||||||
@ -1152,7 +1152,7 @@ Arch_MTime(GNode *gn)
|
|||||||
}
|
}
|
||||||
|
|
||||||
gn->mtime = modTime;
|
gn->mtime = modTime;
|
||||||
return (modTime);
|
return modTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1179,7 +1179,7 @@ Arch_MemMTime(GNode *gn)
|
|||||||
|
|
||||||
if (Lst_Open(gn->parents) != SUCCESS) {
|
if (Lst_Open(gn->parents) != SUCCESS) {
|
||||||
gn->mtime = 0;
|
gn->mtime = 0;
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
while ((ln = Lst_Next(gn->parents)) != NULL) {
|
while ((ln = Lst_Next(gn->parents)) != NULL) {
|
||||||
pgn = (GNode *)Lst_Datum(ln);
|
pgn = (GNode *)Lst_Datum(ln);
|
||||||
@ -1211,7 +1211,7 @@ Arch_MemMTime(GNode *gn)
|
|||||||
|
|
||||||
Lst_Close(gn->parents);
|
Lst_Close(gn->parents);
|
||||||
|
|
||||||
return (gn->mtime);
|
return gn->mtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1252,9 +1252,9 @@ Arch_FindLib(GNode *gn, Lst path)
|
|||||||
free(libName);
|
free(libName);
|
||||||
|
|
||||||
#ifdef LIBRARIES
|
#ifdef LIBRARIES
|
||||||
Var_Set(TARGET, gn->name, gn, 0);
|
Var_Set(TARGET, gn->name, gn);
|
||||||
#else
|
#else
|
||||||
Var_Set(TARGET, gn->path == NULL ? gn->name : gn->path, gn, 0);
|
Var_Set(TARGET, gn->path == NULL ? gn->name : gn->path, gn);
|
||||||
#endif /* LIBRARIES */
|
#endif /* LIBRARIES */
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1337,7 +1337,7 @@ Arch_LibOODate(GNode *gn)
|
|||||||
oodate = FALSE;
|
oodate = FALSE;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
return (oodate);
|
return oodate;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: buf.c,v 1.25 2012/04/24 20:26:58 sjg Exp $ */
|
/* $NetBSD: buf.c,v 1.26 2020/07/03 08:02:55 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||||
@ -70,14 +70,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: buf.c,v 1.25 2012/04/24 20:26:58 sjg Exp $";
|
static char rcsid[] = "$NetBSD: buf.c,v 1.26 2020/07/03 08:02:55 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)buf.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)buf.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: buf.c,v 1.25 2012/04/24 20:26:58 sjg Exp $");
|
__RCSID("$NetBSD: buf.c,v 1.26 2020/07/03 08:02:55 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -160,7 +160,7 @@ Buf_GetAll(Buffer *bp, int *numBytesPtr)
|
|||||||
if (numBytesPtr != NULL)
|
if (numBytesPtr != NULL)
|
||||||
*numBytesPtr = bp->count;
|
*numBytesPtr = bp->count;
|
||||||
|
|
||||||
return (bp->buffer);
|
return bp->buffer;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: compat.c,v 1.110 2020/01/19 19:42:32 riastradh Exp $ */
|
/* $NetBSD: compat.c,v 1.113 2020/07/03 08:13:23 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||||
@ -70,14 +70,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: compat.c,v 1.110 2020/01/19 19:42:32 riastradh Exp $";
|
static char rcsid[] = "$NetBSD: compat.c,v 1.113 2020/07/03 08:13:23 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)compat.c 8.2 (Berkeley) 3/19/94";
|
static char sccsid[] = "@(#)compat.c 8.2 (Berkeley) 3/19/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: compat.c,v 1.110 2020/01/19 19:42:32 riastradh Exp $");
|
__RCSID("$NetBSD: compat.c,v 1.113 2020/07/03 08:13:23 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -249,18 +249,18 @@ CompatRunCommand(void *cmdp, void *gnp)
|
|||||||
|
|
||||||
if (*cmdStart == '\0') {
|
if (*cmdStart == '\0') {
|
||||||
free(cmdStart);
|
free(cmdStart);
|
||||||
return(0);
|
return 0;
|
||||||
}
|
}
|
||||||
cmd = cmdStart;
|
cmd = cmdStart;
|
||||||
Lst_Replace(cmdNode, cmdStart);
|
Lst_Replace(cmdNode, cmdStart);
|
||||||
|
|
||||||
if ((gn->type & OP_SAVE_CMDS) && (gn != ENDNode)) {
|
if ((gn->type & OP_SAVE_CMDS) && (gn != ENDNode)) {
|
||||||
(void)Lst_AtEnd(ENDNode->commands, cmdStart);
|
(void)Lst_AtEnd(ENDNode->commands, cmdStart);
|
||||||
return(0);
|
return 0;
|
||||||
}
|
}
|
||||||
if (strcmp(cmdStart, "...") == 0) {
|
if (strcmp(cmdStart, "...") == 0) {
|
||||||
gn->type |= OP_SAVE_CMDS;
|
gn->type |= OP_SAVE_CMDS;
|
||||||
return(0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ((*cmd == '@') || (*cmd == '-') || (*cmd == '+')) {
|
while ((*cmd == '@') || (*cmd == '-') || (*cmd == '+')) {
|
||||||
@ -287,7 +287,7 @@ CompatRunCommand(void *cmdp, void *gnp)
|
|||||||
* If we did not end up with a command, just skip it.
|
* If we did not end up with a command, just skip it.
|
||||||
*/
|
*/
|
||||||
if (!*cmd)
|
if (!*cmd)
|
||||||
return (0);
|
return 0;
|
||||||
|
|
||||||
#if !defined(MAKE_NATIVE)
|
#if !defined(MAKE_NATIVE)
|
||||||
/*
|
/*
|
||||||
@ -325,7 +325,7 @@ CompatRunCommand(void *cmdp, void *gnp)
|
|||||||
* we go...
|
* we go...
|
||||||
*/
|
*/
|
||||||
if (!doIt && NoExecute(gn)) {
|
if (!doIt && NoExecute(gn)) {
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
if (DEBUG(JOB))
|
if (DEBUG(JOB))
|
||||||
fprintf(debug_file, "Execute: '%s'\n", cmd);
|
fprintf(debug_file, "Execute: '%s'\n", cmd);
|
||||||
@ -500,7 +500,7 @@ again:
|
|||||||
kill(myPid, compatSigno);
|
kill(myPid, compatSigno);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (status);
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -550,7 +550,7 @@ Compat_Make(void *gnp, void *pgnp)
|
|||||||
|
|
||||||
if (Lst_Member(gn->iParents, pgn) != NULL) {
|
if (Lst_Member(gn->iParents, pgn) != NULL) {
|
||||||
char *p1;
|
char *p1;
|
||||||
Var_Set(IMPSRC, Var_Value(TARGET, gn, &p1), pgn, 0);
|
Var_Set(IMPSRC, Var_Value(TARGET, gn, &p1), pgn);
|
||||||
free(p1);
|
free(p1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -654,7 +654,7 @@ Compat_Make(void *gnp, void *pgnp)
|
|||||||
} else {
|
} else {
|
||||||
if (Lst_Member(gn->iParents, pgn) != NULL) {
|
if (Lst_Member(gn->iParents, pgn) != NULL) {
|
||||||
char *p1;
|
char *p1;
|
||||||
Var_Set(IMPSRC, Var_Value(TARGET, gn, &p1), pgn, 0);
|
Var_Set(IMPSRC, Var_Value(TARGET, gn, &p1), pgn);
|
||||||
free(p1);
|
free(p1);
|
||||||
}
|
}
|
||||||
switch(gn->made) {
|
switch(gn->made) {
|
||||||
@ -681,7 +681,7 @@ Compat_Make(void *gnp, void *pgnp)
|
|||||||
|
|
||||||
cohorts:
|
cohorts:
|
||||||
Lst_ForEach(gn->cohorts, Compat_Make, pgnp);
|
Lst_ForEach(gn->cohorts, Compat_Make, pgnp);
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: cond.c,v 1.75 2017/04/16 20:59:04 riastradh Exp $ */
|
/* $NetBSD: cond.c,v 1.78 2020/07/03 08:13:23 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||||
@ -70,14 +70,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: cond.c,v 1.75 2017/04/16 20:59:04 riastradh Exp $";
|
static char rcsid[] = "$NetBSD: cond.c,v 1.78 2020/07/03 08:13:23 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)cond.c 8.2 (Berkeley) 1/2/94";
|
static char sccsid[] = "@(#)cond.c 8.2 (Berkeley) 1/2/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: cond.c,v 1.75 2017/04/16 20:59:04 riastradh Exp $");
|
__RCSID("$NetBSD: cond.c,v 1.78 2020/07/03 08:13:23 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -146,7 +146,7 @@ typedef enum {
|
|||||||
* last two fields are stored in condInvert and condDefProc, respectively.
|
* last two fields are stored in condInvert and condDefProc, respectively.
|
||||||
*/
|
*/
|
||||||
static void CondPushBack(Token);
|
static void CondPushBack(Token);
|
||||||
static int CondGetArg(char **, char **, const char *);
|
static int CondGetArg(Boolean, char **, char **, const char *);
|
||||||
static Boolean CondDoDefined(int, const char *);
|
static Boolean CondDoDefined(int, const char *);
|
||||||
static int CondStrMatch(const void *, const void *);
|
static int CondStrMatch(const void *, const void *);
|
||||||
static Boolean CondDoMake(int, const char *);
|
static Boolean CondDoMake(int, const char *);
|
||||||
@ -225,9 +225,6 @@ CondPushBack(Token t)
|
|||||||
* CondGetArg --
|
* CondGetArg --
|
||||||
* Find the argument of a built-in function.
|
* Find the argument of a built-in function.
|
||||||
*
|
*
|
||||||
* Input:
|
|
||||||
* parens TRUE if arg should be bounded by parens
|
|
||||||
*
|
|
||||||
* Results:
|
* Results:
|
||||||
* The length of the argument and the address of the argument.
|
* The length of the argument and the address of the argument.
|
||||||
*
|
*
|
||||||
@ -238,7 +235,7 @@ CondPushBack(Token t)
|
|||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
static int
|
static int
|
||||||
CondGetArg(char **linePtr, char **argPtr, const char *func)
|
CondGetArg(Boolean doEval, char **linePtr, char **argPtr, const char *func)
|
||||||
{
|
{
|
||||||
char *cp;
|
char *cp;
|
||||||
int argLen;
|
int argLen;
|
||||||
@ -259,7 +256,7 @@ CondGetArg(char **linePtr, char **argPtr, const char *func)
|
|||||||
* the word 'make' or 'defined' at the beginning of a symbol...
|
* the word 'make' or 'defined' at the beginning of a symbol...
|
||||||
*/
|
*/
|
||||||
*argPtr = NULL;
|
*argPtr = NULL;
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
while (*cp == ' ' || *cp == '\t') {
|
while (*cp == ' ' || *cp == '\t') {
|
||||||
@ -290,7 +287,8 @@ CondGetArg(char **linePtr, char **argPtr, const char *func)
|
|||||||
int len;
|
int len;
|
||||||
void *freeIt;
|
void *freeIt;
|
||||||
|
|
||||||
cp2 = Var_Parse(cp, VAR_CMD, VARF_UNDEFERR|VARF_WANTRES,
|
cp2 = Var_Parse(cp, VAR_CMD, VARF_UNDEFERR|
|
||||||
|
(doEval ? VARF_WANTRES : 0),
|
||||||
&len, &freeIt);
|
&len, &freeIt);
|
||||||
Buf_AddBytes(&buf, strlen(cp2), cp2);
|
Buf_AddBytes(&buf, strlen(cp2), cp2);
|
||||||
free(freeIt);
|
free(freeIt);
|
||||||
@ -316,11 +314,11 @@ CondGetArg(char **linePtr, char **argPtr, const char *func)
|
|||||||
if (func != NULL && *cp++ != ')') {
|
if (func != NULL && *cp++ != ')') {
|
||||||
Parse_Error(PARSE_WARNING, "Missing closing parenthesis for %s()",
|
Parse_Error(PARSE_WARNING, "Missing closing parenthesis for %s()",
|
||||||
func);
|
func);
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
*linePtr = cp;
|
*linePtr = cp;
|
||||||
return (argLen);
|
return argLen;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -349,7 +347,7 @@ CondDoDefined(int argLen MAKE_ATTR_UNUSED, const char *arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
free(p1);
|
free(p1);
|
||||||
return (result);
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -369,7 +367,7 @@ CondDoDefined(int argLen MAKE_ATTR_UNUSED, const char *arg)
|
|||||||
static int
|
static int
|
||||||
CondStrMatch(const void *string, const void *pattern)
|
CondStrMatch(const void *string, const void *pattern)
|
||||||
{
|
{
|
||||||
return(!Str_Match(string, pattern));
|
return !Str_Match(string, pattern);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -421,7 +419,7 @@ CondDoExists(int argLen MAKE_ATTR_UNUSED, const char *arg)
|
|||||||
} else {
|
} else {
|
||||||
result = FALSE;
|
result = FALSE;
|
||||||
}
|
}
|
||||||
return (result);
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -443,7 +441,7 @@ CondDoTarget(int argLen MAKE_ATTR_UNUSED, const char *arg)
|
|||||||
GNode *gn;
|
GNode *gn;
|
||||||
|
|
||||||
gn = Targ_FindNode(arg, TARG_NOCREATE);
|
gn = Targ_FindNode(arg, TARG_NOCREATE);
|
||||||
return (gn != NULL) && !OP_NOP(gn->type);
|
return gn != NULL && !OP_NOP(gn->type);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -467,7 +465,7 @@ CondDoCommands(int argLen MAKE_ATTR_UNUSED, const char *arg)
|
|||||||
GNode *gn;
|
GNode *gn;
|
||||||
|
|
||||||
gn = Targ_FindNode(arg, TARG_NOCREATE);
|
gn = Targ_FindNode(arg, TARG_NOCREATE);
|
||||||
return (gn != NULL) && !OP_NOP(gn->type) && !Lst_IsEmpty(gn->commands);
|
return gn != NULL && !OP_NOP(gn->type) && !Lst_IsEmpty(gn->commands);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -577,7 +575,7 @@ CondGetString(Boolean doEval, Boolean *quoted, void **freeIt, Boolean strictLHS)
|
|||||||
/* if we are in quotes, then an undefined variable is ok */
|
/* if we are in quotes, then an undefined variable is ok */
|
||||||
str = Var_Parse(condExpr, VAR_CMD,
|
str = Var_Parse(condExpr, VAR_CMD,
|
||||||
((!qt && doEval) ? VARF_UNDEFERR : 0) |
|
((!qt && doEval) ? VARF_UNDEFERR : 0) |
|
||||||
VARF_WANTRES, &len, freeIt);
|
(doEval ? VARF_WANTRES : 0), &len, freeIt);
|
||||||
if (str == var_Error) {
|
if (str == var_Error) {
|
||||||
if (*freeIt) {
|
if (*freeIt) {
|
||||||
free(*freeIt);
|
free(*freeIt);
|
||||||
@ -813,7 +811,7 @@ done:
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
get_mpt_arg(char **linePtr, char **argPtr, const char *func MAKE_ATTR_UNUSED)
|
get_mpt_arg(Boolean doEval, char **linePtr, char **argPtr, const char *func MAKE_ATTR_UNUSED)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Use Var_Parse to parse the spec in parens and return
|
* Use Var_Parse to parse the spec in parens and return
|
||||||
@ -827,7 +825,7 @@ get_mpt_arg(char **linePtr, char **argPtr, const char *func MAKE_ATTR_UNUSED)
|
|||||||
/* We do all the work here and return the result as the length */
|
/* We do all the work here and return the result as the length */
|
||||||
*argPtr = NULL;
|
*argPtr = NULL;
|
||||||
|
|
||||||
val = Var_Parse(cp - 1, VAR_CMD, VARF_WANTRES, &length, &freeIt);
|
val = Var_Parse(cp - 1, VAR_CMD, doEval ? VARF_WANTRES : 0, &length, &freeIt);
|
||||||
/*
|
/*
|
||||||
* Advance *linePtr to beyond the closing ). Note that
|
* Advance *linePtr to beyond the closing ). Note that
|
||||||
* we subtract one because 'length' is calculated from 'cp - 1'.
|
* we subtract one because 'length' is calculated from 'cp - 1'.
|
||||||
@ -864,7 +862,7 @@ compare_function(Boolean doEval)
|
|||||||
static const struct fn_def {
|
static const struct fn_def {
|
||||||
const char *fn_name;
|
const char *fn_name;
|
||||||
int fn_name_len;
|
int fn_name_len;
|
||||||
int (*fn_getarg)(char **, char **, const char *);
|
int (*fn_getarg)(Boolean, char **, char **, const char *);
|
||||||
Boolean (*fn_proc)(int, const char *);
|
Boolean (*fn_proc)(int, const char *);
|
||||||
} fn_defs[] = {
|
} fn_defs[] = {
|
||||||
{ "defined", 7, CondGetArg, CondDoDefined },
|
{ "defined", 7, CondGetArg, CondDoDefined },
|
||||||
@ -892,7 +890,7 @@ compare_function(Boolean doEval)
|
|||||||
if (*cp != '(')
|
if (*cp != '(')
|
||||||
break;
|
break;
|
||||||
|
|
||||||
arglen = fn_def->fn_getarg(&cp, &arg, fn_def->fn_name);
|
arglen = fn_def->fn_getarg(doEval, &cp, &arg, fn_def->fn_name);
|
||||||
if (arglen <= 0) {
|
if (arglen <= 0) {
|
||||||
condExpr = cp;
|
condExpr = cp;
|
||||||
return arglen < 0 ? TOK_ERROR : TOK_FALSE;
|
return arglen < 0 ? TOK_ERROR : TOK_FALSE;
|
||||||
@ -917,7 +915,7 @@ compare_function(Boolean doEval)
|
|||||||
* would be invalid if we did "defined(a)" - so instead treat as an
|
* would be invalid if we did "defined(a)" - so instead treat as an
|
||||||
* expression.
|
* expression.
|
||||||
*/
|
*/
|
||||||
arglen = CondGetArg(&cp, &arg, NULL);
|
arglen = CondGetArg(doEval, &cp, &arg, NULL);
|
||||||
for (cp1 = cp; isspace(*(unsigned char *)cp1); cp1++)
|
for (cp1 = cp; isspace(*(unsigned char *)cp1); cp1++)
|
||||||
continue;
|
continue;
|
||||||
if (*cp1 == '=' || *cp1 == '!')
|
if (*cp1 == '=' || *cp1 == '!')
|
||||||
@ -1040,7 +1038,7 @@ CondT(Boolean doEval)
|
|||||||
t = TOK_TRUE;
|
t = TOK_TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (t);
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1086,7 +1084,7 @@ CondF(Boolean doEval)
|
|||||||
CondPushBack(o);
|
CondPushBack(o);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (l);
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1133,7 +1131,7 @@ CondE(Boolean doEval)
|
|||||||
CondPushBack(o);
|
CondPushBack(o);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (l);
|
return l;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: dir.c,v 1.74 2020/06/05 18:03:59 sjg Exp $ */
|
/* $NetBSD: dir.c,v 1.76 2020/07/03 08:13:23 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||||
@ -70,14 +70,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: dir.c,v 1.74 2020/06/05 18:03:59 sjg Exp $";
|
static char rcsid[] = "$NetBSD: dir.c,v 1.76 2020/07/03 08:13:23 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)dir.c 8.2 (Berkeley) 1/2/94";
|
static char sccsid[] = "@(#)dir.c 8.2 (Berkeley) 1/2/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: dir.c,v 1.74 2020/06/05 18:03:59 sjg Exp $");
|
__RCSID("$NetBSD: dir.c,v 1.76 2020/07/03 08:13:23 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -537,7 +537,7 @@ Dir_SetPATH(void)
|
|||||||
static int
|
static int
|
||||||
DirFindName(const void *p, const void *dname)
|
DirFindName(const void *p, const void *dname)
|
||||||
{
|
{
|
||||||
return (strcmp(((const Path *)p)->name, dname));
|
return strcmp(((const Path *)p)->name, dname);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -644,7 +644,7 @@ DirMatchFiles(const char *pattern, Path *p, Lst expansions)
|
|||||||
STR_ADDSLASH)));
|
STR_ADDSLASH)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1004,7 +1004,7 @@ DirLookupSubdir(Path *p, const char *name)
|
|||||||
|
|
||||||
if (cached_stat(file, &stb) == 0) {
|
if (cached_stat(file, &stb) == 0) {
|
||||||
nearmisses += 1;
|
nearmisses += 1;
|
||||||
return (file);
|
return file;
|
||||||
}
|
}
|
||||||
free(file);
|
free(file);
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -1061,7 +1061,7 @@ DirLookupAbs(Path *p, const char *name, const char *cp)
|
|||||||
if (DEBUG(DIR)) {
|
if (DEBUG(DIR)) {
|
||||||
fprintf(debug_file, " returning %s\n", name);
|
fprintf(debug_file, " returning %s\n", name);
|
||||||
}
|
}
|
||||||
return (bmake_strdup(name));
|
return bmake_strdup(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1087,7 +1087,7 @@ DirFindDot(Boolean hasSlash MAKE_ATTR_UNUSED, const char *name, const char *cp)
|
|||||||
}
|
}
|
||||||
hits += 1;
|
hits += 1;
|
||||||
dot->hits += 1;
|
dot->hits += 1;
|
||||||
return (bmake_strdup(name));
|
return bmake_strdup(name);
|
||||||
}
|
}
|
||||||
if (cur &&
|
if (cur &&
|
||||||
Hash_FindEntry(&cur->files, cp) != NULL) {
|
Hash_FindEntry(&cur->files, cp) != NULL) {
|
||||||
@ -1384,7 +1384,7 @@ Dir_FindFile(const char *name, Lst path)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (Hash_FindEntry(&p->files, cp) != NULL) {
|
if (Hash_FindEntry(&p->files, cp) != NULL) {
|
||||||
return (bmake_strdup(name));
|
return bmake_strdup(name);
|
||||||
} else {
|
} else {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -1395,7 +1395,7 @@ Dir_FindFile(const char *name, Lst path)
|
|||||||
|
|
||||||
bigmisses += 1;
|
bigmisses += 1;
|
||||||
if (cached_stat(name, &stb) == 0) {
|
if (cached_stat(name, &stb) == 0) {
|
||||||
return (bmake_strdup(name));
|
return bmake_strdup(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DEBUG(DIR)) {
|
if (DEBUG(DIR)) {
|
||||||
@ -1459,7 +1459,7 @@ Dir_FindHereOrAbove(char *here, char *search_path, char *result, int rlen) {
|
|||||||
* done!
|
* done!
|
||||||
*/
|
*/
|
||||||
snprintf(result, rlen, "%s", try);
|
snprintf(result, rlen, "%s", try);
|
||||||
return(1);
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1481,7 +1481,7 @@ Dir_FindHereOrAbove(char *here, char *search_path, char *result, int rlen) {
|
|||||||
/*
|
/*
|
||||||
* we failed...
|
* we failed...
|
||||||
*/
|
*/
|
||||||
return(0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1572,7 +1572,7 @@ Dir_MTime(GNode *gn, Boolean recheck)
|
|||||||
}
|
}
|
||||||
|
|
||||||
gn->mtime = stb.st_mtime;
|
gn->mtime = stb.st_mtime;
|
||||||
return (gn->mtime);
|
return gn->mtime;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1677,7 +1677,7 @@ Dir_CopyDir(void *p)
|
|||||||
{
|
{
|
||||||
((Path *)p)->refCount += 1;
|
((Path *)p)->refCount += 1;
|
||||||
|
|
||||||
return (p);
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1722,7 +1722,7 @@ Dir_MakeFlags(const char *flag, Lst path)
|
|||||||
Lst_Close(path);
|
Lst_Close(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (str);
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: for.c,v 1.53 2017/04/16 21:04:44 riastradh Exp $ */
|
/* $NetBSD: for.c,v 1.54 2020/07/03 08:13:23 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1992, The Regents of the University of California.
|
* Copyright (c) 1992, The Regents of the University of California.
|
||||||
@ -30,14 +30,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: for.c,v 1.53 2017/04/16 21:04:44 riastradh Exp $";
|
static char rcsid[] = "$NetBSD: for.c,v 1.54 2020/07/03 08:13:23 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)for.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)for.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: for.c,v 1.53 2017/04/16 21:04:44 riastradh Exp $");
|
__RCSID("$NetBSD: for.c,v 1.54 2020/07/03 08:13:23 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: hash.c,v 1.20 2013/11/14 00:27:05 sjg Exp $ */
|
/* $NetBSD: hash.c,v 1.22 2020/07/03 17:03:09 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||||
@ -70,14 +70,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: hash.c,v 1.20 2013/11/14 00:27:05 sjg Exp $";
|
static char rcsid[] = "$NetBSD: hash.c,v 1.22 2020/07/03 17:03:09 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)hash.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)hash.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: hash.c,v 1.20 2013/11/14 00:27:05 sjg Exp $");
|
__RCSID("$NetBSD: hash.c,v 1.22 2020/07/03 17:03:09 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -229,7 +229,7 @@ Hash_FindEntry(Hash_Table *t, const char *key)
|
|||||||
p = key;
|
p = key;
|
||||||
for (e = t->bucketPtr[h & t->mask]; e != NULL; e = e->next)
|
for (e = t->bucketPtr[h & t->mask]; e != NULL; e = e->next)
|
||||||
if (e->namehash == h && strcmp(e->name, p) == 0)
|
if (e->namehash == h && strcmp(e->name, p) == 0)
|
||||||
return (e);
|
return e;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,7 +279,7 @@ Hash_CreateEntry(Hash_Table *t, const char *key, Boolean *newPtr)
|
|||||||
if (e->namehash == h && strcmp(e->name, p) == 0) {
|
if (e->namehash == h && strcmp(e->name, p) == 0) {
|
||||||
if (newPtr != NULL)
|
if (newPtr != NULL)
|
||||||
*newPtr = FALSE;
|
*newPtr = FALSE;
|
||||||
return (e);
|
return e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -301,7 +301,7 @@ Hash_CreateEntry(Hash_Table *t, const char *key, Boolean *newPtr)
|
|||||||
|
|
||||||
if (newPtr != NULL)
|
if (newPtr != NULL)
|
||||||
*newPtr = TRUE;
|
*newPtr = TRUE;
|
||||||
return (e);
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -418,7 +418,7 @@ Hash_EnumNext(Hash_Search *searchPtr)
|
|||||||
e = t->bucketPtr[searchPtr->nextIndex++];
|
e = t->bucketPtr[searchPtr->nextIndex++];
|
||||||
}
|
}
|
||||||
searchPtr->hashEntryPtr = e;
|
searchPtr->hashEntryPtr = e;
|
||||||
return (e);
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -464,3 +464,14 @@ RebuildTable(Hash_Table *t)
|
|||||||
}
|
}
|
||||||
free(oldhp);
|
free(oldhp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Hash_ForEach(Hash_Table *t, void (*action)(void *, void *), void *data)
|
||||||
|
{
|
||||||
|
Hash_Search search;
|
||||||
|
Hash_Entry *e;
|
||||||
|
|
||||||
|
for (e = Hash_EnumFirst(t, &search);
|
||||||
|
e != NULL;
|
||||||
|
e = Hash_EnumNext(&search))
|
||||||
|
action(Hash_GetValue(e), data);
|
||||||
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: hash.h,v 1.12 2017/05/31 21:07:03 maya Exp $ */
|
/* $NetBSD: hash.h,v 1.13 2020/07/03 17:03:09 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||||
@ -145,5 +145,6 @@ Hash_Entry *Hash_CreateEntry(Hash_Table *, const char *, Boolean *);
|
|||||||
void Hash_DeleteEntry(Hash_Table *, Hash_Entry *);
|
void Hash_DeleteEntry(Hash_Table *, Hash_Entry *);
|
||||||
Hash_Entry *Hash_EnumFirst(Hash_Table *, Hash_Search *);
|
Hash_Entry *Hash_EnumFirst(Hash_Table *, Hash_Search *);
|
||||||
Hash_Entry *Hash_EnumNext(Hash_Search *);
|
Hash_Entry *Hash_EnumNext(Hash_Search *);
|
||||||
|
void Hash_ForEach(Hash_Table *, void (*)(void *, void *), void *);
|
||||||
|
|
||||||
#endif /* _HASH_H */
|
#endif /* _HASH_H */
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: job.c,v 1.197 2020/02/06 01:13:19 sjg Exp $ */
|
/* $NetBSD: job.c,v 1.201 2020/07/03 08:13:23 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||||
@ -70,14 +70,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: job.c,v 1.197 2020/02/06 01:13:19 sjg Exp $";
|
static char rcsid[] = "$NetBSD: job.c,v 1.201 2020/07/03 08:13:23 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)job.c 8.2 (Berkeley) 3/19/94";
|
static char sccsid[] = "@(#)job.c 8.2 (Berkeley) 3/19/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: job.c,v 1.197 2020/02/06 01:13:19 sjg Exp $");
|
__RCSID("$NetBSD: job.c,v 1.201 2020/07/03 08:13:23 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -951,7 +951,7 @@ JobSaveCommand(void *cmd, void *gn)
|
|||||||
{
|
{
|
||||||
cmd = Var_Subst(NULL, (char *)cmd, (GNode *)gn, VARF_WANTRES);
|
cmd = Var_Subst(NULL, (char *)cmd, (GNode *)gn, VARF_WANTRES);
|
||||||
(void)Lst_AtEnd(postCommands->commands, cmd);
|
(void)Lst_AtEnd(postCommands->commands, cmd);
|
||||||
return(0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1074,6 +1074,7 @@ JobFinish (Job *job, WAIT_T status)
|
|||||||
meta_job_error(job, job->node, job->flags, WEXITSTATUS(status));
|
meta_job_error(job, job->node, job->flags, WEXITSTATUS(status));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
if (!dieQuietly(job->node, -1))
|
||||||
(void)printf("*** [%s] Error code %d%s\n",
|
(void)printf("*** [%s] Error code %d%s\n",
|
||||||
job->node->name,
|
job->node->name,
|
||||||
WEXITSTATUS(status),
|
WEXITSTATUS(status),
|
||||||
@ -1289,7 +1290,7 @@ Job_CheckCommands(GNode *gn, void (*abortProc)(const char *, ...))
|
|||||||
* .DEFAULT itself.
|
* .DEFAULT itself.
|
||||||
*/
|
*/
|
||||||
Make_HandleUse(DEFAULT, gn);
|
Make_HandleUse(DEFAULT, gn);
|
||||||
Var_Set(IMPSRC, Var_Value(TARGET, gn, &p1), gn, 0);
|
Var_Set(IMPSRC, Var_Value(TARGET, gn, &p1), gn);
|
||||||
free(p1);
|
free(p1);
|
||||||
} else if (Dir_MTime(gn, 0) == 0 && (gn->type & OP_SPECIAL) == 0) {
|
} else if (Dir_MTime(gn, 0) == 0 && (gn->type & OP_SPECIAL) == 0) {
|
||||||
/*
|
/*
|
||||||
@ -1784,7 +1785,7 @@ JobStart(GNode *gn, int flags)
|
|||||||
JobCreatePipe(job, 3);
|
JobCreatePipe(job, 3);
|
||||||
|
|
||||||
JobExec(job, argv);
|
JobExec(job, argv);
|
||||||
return(JOB_RUNNING);
|
return JOB_RUNNING;
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
static char *
|
||||||
@ -2280,7 +2281,7 @@ Job_SetPrefix(void)
|
|||||||
if (targPrefix) {
|
if (targPrefix) {
|
||||||
free(targPrefix);
|
free(targPrefix);
|
||||||
} else if (!Var_Exists(MAKE_JOB_PREFIX, VAR_GLOBAL)) {
|
} else if (!Var_Exists(MAKE_JOB_PREFIX, VAR_GLOBAL)) {
|
||||||
Var_Set(MAKE_JOB_PREFIX, "---", VAR_GLOBAL, 0);
|
Var_Set(MAKE_JOB_PREFIX, "---", VAR_GLOBAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
targPrefix = Var_Subst(NULL, "${" MAKE_JOB_PREFIX "}",
|
targPrefix = Var_Subst(NULL, "${" MAKE_JOB_PREFIX "}",
|
||||||
@ -2432,7 +2433,7 @@ JobMatchShell(const char *name)
|
|||||||
|
|
||||||
for (sh = shells; sh->name != NULL; sh++) {
|
for (sh = shells; sh->name != NULL; sh++) {
|
||||||
if (strcmp(name, sh->name) == 0)
|
if (strcmp(name, sh->name) == 0)
|
||||||
return (sh);
|
return sh;
|
||||||
}
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -2548,7 +2549,7 @@ Job_ParseShell(char *line)
|
|||||||
Parse_Error(PARSE_FATAL, "Unknown keyword \"%s\"",
|
Parse_Error(PARSE_FATAL, "Unknown keyword \"%s\"",
|
||||||
*argv);
|
*argv);
|
||||||
free(words);
|
free(words);
|
||||||
return(FAILURE);
|
return FAILURE;
|
||||||
}
|
}
|
||||||
fullSpec = TRUE;
|
fullSpec = TRUE;
|
||||||
}
|
}
|
||||||
@ -2564,13 +2565,13 @@ Job_ParseShell(char *line)
|
|||||||
if (newShell.name == NULL) {
|
if (newShell.name == NULL) {
|
||||||
Parse_Error(PARSE_FATAL, "Neither path nor name specified");
|
Parse_Error(PARSE_FATAL, "Neither path nor name specified");
|
||||||
free(words);
|
free(words);
|
||||||
return(FAILURE);
|
return FAILURE;
|
||||||
} else {
|
} else {
|
||||||
if ((sh = JobMatchShell(newShell.name)) == NULL) {
|
if ((sh = JobMatchShell(newShell.name)) == NULL) {
|
||||||
Parse_Error(PARSE_WARNING, "%s: No matching shell",
|
Parse_Error(PARSE_WARNING, "%s: No matching shell",
|
||||||
newShell.name);
|
newShell.name);
|
||||||
free(words);
|
free(words);
|
||||||
return(FAILURE);
|
return FAILURE;
|
||||||
}
|
}
|
||||||
commandShell = sh;
|
commandShell = sh;
|
||||||
shellName = newShell.name;
|
shellName = newShell.name;
|
||||||
@ -2606,7 +2607,7 @@ Job_ParseShell(char *line)
|
|||||||
Parse_Error(PARSE_WARNING, "%s: No matching shell",
|
Parse_Error(PARSE_WARNING, "%s: No matching shell",
|
||||||
shellName);
|
shellName);
|
||||||
free(words);
|
free(words);
|
||||||
return(FAILURE);
|
return FAILURE;
|
||||||
}
|
}
|
||||||
commandShell = sh;
|
commandShell = sh;
|
||||||
} else {
|
} else {
|
||||||
@ -2723,7 +2724,7 @@ Job_Finish(void)
|
|||||||
JobRun(postCommands);
|
JobRun(postCommands);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(errors);
|
return errors;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -3068,6 +3069,8 @@ Job_TokenWithdraw(void)
|
|||||||
/* And put the stopper back */
|
/* And put the stopper back */
|
||||||
while (write(tokenWaitJob.outPipe, &tok, 1) == -1 && errno == EAGAIN)
|
while (write(tokenWaitJob.outPipe, &tok, 1) == -1 && errno == EAGAIN)
|
||||||
continue;
|
continue;
|
||||||
|
if (dieQuietly(NULL, 1))
|
||||||
|
exit(2);
|
||||||
Fatal("A failure has been detected in another branch of the parallel make");
|
Fatal("A failure has been detected in another branch of the parallel make");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3104,7 +3107,7 @@ Job_RunTarget(const char *target, const char *fname) {
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
if (fname)
|
if (fname)
|
||||||
Var_Set(ALLSRC, fname, gn, 0);
|
Var_Set(ALLSRC, fname, gn);
|
||||||
|
|
||||||
JobRun(gn);
|
JobRun(gn);
|
||||||
if (gn->made == ERROR) {
|
if (gn->made == ERROR) {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: job.h,v 1.42 2013/07/05 22:14:56 sjg Exp $ */
|
/* $NetBSD: job.h,v 1.43 2020/07/03 08:13:23 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
* Copyright (c) 1988, 1989, 1990 The Regents of the University of California.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstAppend.c,v 1.14 2009/01/23 21:26:30 dsl Exp $ */
|
/* $NetBSD: lstAppend.c,v 1.15 2020/07/03 08:37:56 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstAppend.c,v 1.14 2009/01/23 21:26:30 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstAppend.c,v 1.15 2020/07/03 08:37:56 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstAppend.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstAppend.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstAppend.c,v 1.14 2009/01/23 21:26:30 dsl Exp $");
|
__RCSID("$NetBSD: lstAppend.c,v 1.15 2020/07/03 08:37:56 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -85,7 +85,7 @@ Lst_InsertAfter(Lst l, LstNode ln, void *d)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!LstValid (l) || LstIsEmpty (l) || ! LstNodeValid (ln, l)) {
|
if (!LstValid (l) || LstIsEmpty (l) || ! LstNodeValid (ln, l)) {
|
||||||
return (FAILURE);
|
return FAILURE;
|
||||||
}
|
}
|
||||||
ok:
|
ok:
|
||||||
|
|
||||||
@ -117,6 +117,5 @@ Lst_InsertAfter(Lst l, LstNode ln, void *d)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (SUCCESS);
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstAtEnd.c,v 1.13 2009/01/23 21:26:30 dsl Exp $ */
|
/* $NetBSD: lstAtEnd.c,v 1.14 2020/07/03 08:37:56 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstAtEnd.c,v 1.13 2009/01/23 21:26:30 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstAtEnd.c,v 1.14 2020/07/03 08:37:56 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstAtEnd.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstAtEnd.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstAtEnd.c,v 1.13 2009/01/23 21:26:30 dsl Exp $");
|
__RCSID("$NetBSD: lstAtEnd.c,v 1.14 2020/07/03 08:37:56 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -75,5 +75,5 @@ Lst_AtEnd(Lst l, void *d)
|
|||||||
LstNode end;
|
LstNode end;
|
||||||
|
|
||||||
end = Lst_Last(l);
|
end = Lst_Last(l);
|
||||||
return (Lst_InsertAfter(l, end, d));
|
return Lst_InsertAfter(l, end, d);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstAtFront.c,v 1.13 2009/01/23 21:26:30 dsl Exp $ */
|
/* $NetBSD: lstAtFront.c,v 1.14 2020/07/03 08:37:56 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstAtFront.c,v 1.13 2009/01/23 21:26:30 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstAtFront.c,v 1.14 2020/07/03 08:37:56 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstAtFront.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstAtFront.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstAtFront.c,v 1.13 2009/01/23 21:26:30 dsl Exp $");
|
__RCSID("$NetBSD: lstAtFront.c,v 1.14 2020/07/03 08:37:56 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -72,5 +72,5 @@ Lst_AtFront(Lst l, void *d)
|
|||||||
LstNode front;
|
LstNode front;
|
||||||
|
|
||||||
front = Lst_First(l);
|
front = Lst_First(l);
|
||||||
return (Lst_InsertBefore(l, front, d));
|
return Lst_InsertBefore(l, front, d);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstClose.c,v 1.11 2006/10/27 21:37:25 dsl Exp $ */
|
/* $NetBSD: lstClose.c,v 1.12 2020/07/03 08:37:56 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstClose.c,v 1.11 2006/10/27 21:37:25 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstClose.c,v 1.12 2020/07/03 08:37:56 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstClose.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstClose.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstClose.c,v 1.11 2006/10/27 21:37:25 dsl Exp $");
|
__RCSID("$NetBSD: lstClose.c,v 1.12 2020/07/03 08:37:56 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -83,4 +83,3 @@ Lst_Close(Lst l)
|
|||||||
list->atEnd = Unknown;
|
list->atEnd = Unknown;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstConcat.c,v 1.16 2008/12/13 15:19:29 dsl Exp $ */
|
/* $NetBSD: lstConcat.c,v 1.17 2020/07/03 08:37:56 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstConcat.c,v 1.16 2008/12/13 15:19:29 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstConcat.c,v 1.17 2020/07/03 08:37:56 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstConcat.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstConcat.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstConcat.c,v 1.16 2008/12/13 15:19:29 dsl Exp $");
|
__RCSID("$NetBSD: lstConcat.c,v 1.17 2020/07/03 08:37:56 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -86,7 +86,7 @@ Lst_Concat(Lst l1, Lst l2, int flags)
|
|||||||
List list2 = l2;
|
List list2 = l2;
|
||||||
|
|
||||||
if (!LstValid (l1) || !LstValid (l2)) {
|
if (!LstValid (l1) || !LstValid (l2)) {
|
||||||
return (FAILURE);
|
return FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags == LST_CONCLINK) {
|
if (flags == LST_CONCLINK) {
|
||||||
@ -180,6 +180,5 @@ Lst_Concat(Lst l1, Lst l2, int flags)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (SUCCESS);
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstDatum.c,v 1.13 2009/01/23 21:26:30 dsl Exp $ */
|
/* $NetBSD: lstDatum.c,v 1.14 2020/07/03 08:37:56 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstDatum.c,v 1.13 2009/01/23 21:26:30 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstDatum.c,v 1.14 2020/07/03 08:37:56 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstDatum.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstDatum.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstDatum.c,v 1.13 2009/01/23 21:26:30 dsl Exp $");
|
__RCSID("$NetBSD: lstDatum.c,v 1.14 2020/07/03 08:37:56 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -69,9 +69,8 @@ void *
|
|||||||
Lst_Datum(LstNode ln)
|
Lst_Datum(LstNode ln)
|
||||||
{
|
{
|
||||||
if (ln != NULL) {
|
if (ln != NULL) {
|
||||||
return ((ln)->datum);
|
return ln->datum;
|
||||||
} else {
|
} else {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstDeQueue.c,v 1.14 2009/01/23 21:26:30 dsl Exp $ */
|
/* $NetBSD: lstDeQueue.c,v 1.15 2020/07/03 08:37:56 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstDeQueue.c,v 1.14 2009/01/23 21:26:30 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstDeQueue.c,v 1.15 2020/07/03 08:37:56 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstDeQueue.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstDeQueue.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstDeQueue.c,v 1.14 2009/01/23 21:26:30 dsl Exp $");
|
__RCSID("$NetBSD: lstDeQueue.c,v 1.15 2020/07/03 08:37:56 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -81,7 +81,6 @@ Lst_DeQueue(Lst l)
|
|||||||
if (Lst_Remove(l, tln) == FAILURE) {
|
if (Lst_Remove(l, tln) == FAILURE) {
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
return (rd);
|
return rd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstDupl.c,v 1.16 2009/01/23 21:26:30 dsl Exp $ */
|
/* $NetBSD: lstDupl.c,v 1.17 2020/07/03 08:37:56 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstDupl.c,v 1.16 2009/01/23 21:26:30 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstDupl.c,v 1.17 2020/07/03 08:37:56 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstDupl.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstDupl.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstDupl.c,v 1.16 2009/01/23 21:26:30 dsl Exp $");
|
__RCSID("$NetBSD: lstDupl.c,v 1.17 2020/07/03 08:37:56 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -103,5 +103,5 @@ Lst_Duplicate(Lst l, DuplicateProc *copyProc)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (nl);
|
return nl;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstEnQueue.c,v 1.13 2009/01/23 21:26:30 dsl Exp $ */
|
/* $NetBSD: lstEnQueue.c,v 1.14 2020/07/03 08:37:56 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstEnQueue.c,v 1.13 2009/01/23 21:26:30 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstEnQueue.c,v 1.14 2020/07/03 08:37:56 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstEnQueue.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstEnQueue.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstEnQueue.c,v 1.13 2009/01/23 21:26:30 dsl Exp $");
|
__RCSID("$NetBSD: lstEnQueue.c,v 1.14 2020/07/03 08:37:56 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -70,9 +70,8 @@ ReturnStatus
|
|||||||
Lst_EnQueue(Lst l, void *d)
|
Lst_EnQueue(Lst l, void *d)
|
||||||
{
|
{
|
||||||
if (LstValid (l) == FALSE) {
|
if (LstValid (l) == FALSE) {
|
||||||
return (FAILURE);
|
return FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (Lst_InsertAfter(l, Lst_Last(l), d));
|
return Lst_InsertAfter(l, Lst_Last(l), d);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstFind.c,v 1.15 2009/01/23 21:58:28 dsl Exp $ */
|
/* $NetBSD: lstFind.c,v 1.16 2020/07/03 08:37:56 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstFind.c,v 1.15 2009/01/23 21:58:28 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstFind.c,v 1.16 2020/07/03 08:37:56 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstFind.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstFind.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstFind.c,v 1.15 2009/01/23 21:58:28 dsl Exp $");
|
__RCSID("$NetBSD: lstFind.c,v 1.16 2020/07/03 08:37:56 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -69,6 +69,5 @@ __RCSID("$NetBSD: lstFind.c,v 1.15 2009/01/23 21:58:28 dsl Exp $");
|
|||||||
LstNode
|
LstNode
|
||||||
Lst_Find(Lst l, const void *d, int (*cProc)(const void *, const void *))
|
Lst_Find(Lst l, const void *d, int (*cProc)(const void *, const void *))
|
||||||
{
|
{
|
||||||
return (Lst_FindFrom(l, Lst_First(l), d, cProc));
|
return Lst_FindFrom(l, Lst_First(l), d, cProc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstFindFrom.c,v 1.15 2009/01/23 21:58:28 dsl Exp $ */
|
/* $NetBSD: lstFindFrom.c,v 1.16 2020/07/03 08:37:56 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstFindFrom.c,v 1.15 2009/01/23 21:58:28 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstFindFrom.c,v 1.16 2020/07/03 08:37:56 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstFindFrom.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstFindFrom.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstFindFrom.c,v 1.15 2009/01/23 21:58:28 dsl Exp $");
|
__RCSID("$NetBSD: lstFindFrom.c,v 1.16 2020/07/03 08:37:56 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -81,10 +81,9 @@ Lst_FindFrom(Lst l, LstNode ln, const void *d,
|
|||||||
|
|
||||||
do {
|
do {
|
||||||
if ((*cProc)(tln->datum, d) == 0)
|
if ((*cProc)(tln->datum, d) == 0)
|
||||||
return (tln);
|
return tln;
|
||||||
tln = tln->nextPtr;
|
tln = tln->nextPtr;
|
||||||
} while (tln != ln && tln != NULL);
|
} while (tln != ln && tln != NULL);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstFirst.c,v 1.12 2008/12/13 15:19:29 dsl Exp $ */
|
/* $NetBSD: lstFirst.c,v 1.13 2020/07/03 08:37:56 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstFirst.c,v 1.12 2008/12/13 15:19:29 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstFirst.c,v 1.13 2020/07/03 08:37:56 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstFirst.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstFirst.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstFirst.c,v 1.12 2008/12/13 15:19:29 dsl Exp $");
|
__RCSID("$NetBSD: lstFirst.c,v 1.13 2020/07/03 08:37:56 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -71,7 +71,6 @@ Lst_First(Lst l)
|
|||||||
if (!LstValid (l) || LstIsEmpty (l)) {
|
if (!LstValid (l) || LstIsEmpty (l)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
return (l->firstPtr);
|
return l->firstPtr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstForEach.c,v 1.13 2009/01/23 21:26:30 dsl Exp $ */
|
/* $NetBSD: lstForEach.c,v 1.14 2020/07/03 08:37:57 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstForEach.c,v 1.13 2009/01/23 21:26:30 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstForEach.c,v 1.14 2020/07/03 08:37:57 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstForEach.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstForEach.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstForEach.c,v 1.13 2009/01/23 21:26:30 dsl Exp $");
|
__RCSID("$NetBSD: lstForEach.c,v 1.14 2020/07/03 08:37:57 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -73,4 +73,3 @@ Lst_ForEach(Lst l, int (*proc)(void *, void *), void *d)
|
|||||||
{
|
{
|
||||||
return Lst_ForEachFrom(l, Lst_First(l), proc, d);
|
return Lst_ForEachFrom(l, Lst_First(l), proc, d);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstForEachFrom.c,v 1.17 2009/01/23 21:26:30 dsl Exp $ */
|
/* $NetBSD: lstForEachFrom.c,v 1.18 2020/07/03 08:37:57 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstForEachFrom.c,v 1.17 2009/01/23 21:26:30 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstForEachFrom.c,v 1.18 2020/07/03 08:37:57 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstForEachFrom.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstForEachFrom.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstForEachFrom.c,v 1.17 2009/01/23 21:26:30 dsl Exp $");
|
__RCSID("$NetBSD: lstForEachFrom.c,v 1.18 2020/07/03 08:37:57 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -122,4 +122,3 @@ Lst_ForEachFrom(Lst l, LstNode ln, int (*proc)(void *, void *),
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstInit.c,v 1.12 2008/12/13 15:19:29 dsl Exp $ */
|
/* $NetBSD: lstInit.c,v 1.13 2020/07/03 08:37:57 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstInit.c,v 1.12 2008/12/13 15:19:29 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstInit.c,v 1.13 2020/07/03 08:37:57 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstInit.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstInit.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstInit.c,v 1.12 2008/12/13 15:19:29 dsl Exp $");
|
__RCSID("$NetBSD: lstInit.c,v 1.13 2020/07/03 08:37:57 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -81,5 +81,5 @@ Lst_Init(Boolean circ)
|
|||||||
nList->isCirc = circ;
|
nList->isCirc = circ;
|
||||||
nList->atEnd = Unknown;
|
nList->atEnd = Unknown;
|
||||||
|
|
||||||
return (nList);
|
return nList;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstInsert.c,v 1.14 2009/01/23 21:26:30 dsl Exp $ */
|
/* $NetBSD: lstInsert.c,v 1.15 2020/07/03 08:37:57 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstInsert.c,v 1.14 2009/01/23 21:26:30 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstInsert.c,v 1.15 2020/07/03 08:37:57 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstInsert.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstInsert.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstInsert.c,v 1.14 2009/01/23 21:26:30 dsl Exp $");
|
__RCSID("$NetBSD: lstInsert.c,v 1.15 2020/07/03 08:37:57 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -87,7 +87,7 @@ Lst_InsertBefore(Lst l, LstNode ln, void *d)
|
|||||||
goto ok;
|
goto ok;
|
||||||
|
|
||||||
if (!LstValid (l) || LstIsEmpty (l) || !LstNodeValid (ln, l)) {
|
if (!LstValid (l) || LstIsEmpty (l) || !LstNodeValid (ln, l)) {
|
||||||
return (FAILURE);
|
return FAILURE;
|
||||||
}
|
}
|
||||||
|
|
||||||
ok:
|
ok:
|
||||||
@ -117,6 +117,5 @@ Lst_InsertBefore(Lst l, LstNode ln, void *d)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (SUCCESS);
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstIsAtEnd.c,v 1.13 2008/02/15 21:29:50 christos Exp $ */
|
/* $NetBSD: lstIsAtEnd.c,v 1.14 2020/07/03 08:37:57 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstIsAtEnd.c,v 1.13 2008/02/15 21:29:50 christos Exp $";
|
static char rcsid[] = "$NetBSD: lstIsAtEnd.c,v 1.14 2020/07/03 08:37:57 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstIsAtEnd.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstIsAtEnd.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstIsAtEnd.c,v 1.13 2008/02/15 21:29:50 christos Exp $");
|
__RCSID("$NetBSD: lstIsAtEnd.c,v 1.14 2020/07/03 08:37:57 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -81,7 +81,6 @@ Lst_IsAtEnd(Lst l)
|
|||||||
{
|
{
|
||||||
List list = l;
|
List list = l;
|
||||||
|
|
||||||
return (!LstValid (l) || !list->isOpen ||
|
return !LstValid (l) || !list->isOpen ||
|
||||||
(list->atEnd == Head) || (list->atEnd == Tail));
|
list->atEnd == Head || list->atEnd == Tail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstIsEmpty.c,v 1.11 2008/12/13 15:19:29 dsl Exp $ */
|
/* $NetBSD: lstIsEmpty.c,v 1.12 2020/07/03 08:37:57 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstIsEmpty.c,v 1.11 2008/12/13 15:19:29 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstIsEmpty.c,v 1.12 2020/07/03 08:37:57 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstIsEmpty.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstIsEmpty.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstIsEmpty.c,v 1.11 2008/12/13 15:19:29 dsl Exp $");
|
__RCSID("$NetBSD: lstIsEmpty.c,v 1.12 2020/07/03 08:37:57 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -70,6 +70,5 @@ __RCSID("$NetBSD: lstIsEmpty.c,v 1.11 2008/12/13 15:19:29 dsl Exp $");
|
|||||||
Boolean
|
Boolean
|
||||||
Lst_IsEmpty(Lst l)
|
Lst_IsEmpty(Lst l)
|
||||||
{
|
{
|
||||||
return ( ! LstValid (l) || LstIsEmpty(l));
|
return !LstValid(l) || LstIsEmpty(l);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstLast.c,v 1.12 2008/12/13 15:19:29 dsl Exp $ */
|
/* $NetBSD: lstLast.c,v 1.13 2020/07/03 08:37:57 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstLast.c,v 1.12 2008/12/13 15:19:29 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstLast.c,v 1.13 2020/07/03 08:37:57 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstLast.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstLast.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstLast.c,v 1.12 2008/12/13 15:19:29 dsl Exp $");
|
__RCSID("$NetBSD: lstLast.c,v 1.13 2020/07/03 08:37:57 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -71,7 +71,6 @@ Lst_Last(Lst l)
|
|||||||
if (!LstValid(l) || LstIsEmpty (l)) {
|
if (!LstValid(l) || LstIsEmpty (l)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
return (l->lastPtr);
|
return l->lastPtr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstNext.c,v 1.12 2008/12/13 15:19:29 dsl Exp $ */
|
/* $NetBSD: lstNext.c,v 1.13 2020/07/03 08:37:57 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstNext.c,v 1.12 2008/12/13 15:19:29 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstNext.c,v 1.13 2020/07/03 08:37:57 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstNext.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstNext.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstNext.c,v 1.12 2008/12/13 15:19:29 dsl Exp $");
|
__RCSID("$NetBSD: lstNext.c,v 1.13 2020/07/03 08:37:57 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -115,6 +115,5 @@ Lst_Next(Lst l)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (tln);
|
return tln;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstOpen.c,v 1.12 2008/12/13 15:19:29 dsl Exp $ */
|
/* $NetBSD: lstOpen.c,v 1.13 2020/07/03 08:37:57 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstOpen.c,v 1.12 2008/12/13 15:19:29 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstOpen.c,v 1.13 2020/07/03 08:37:57 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstOpen.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstOpen.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstOpen.c,v 1.12 2008/12/13 15:19:29 dsl Exp $");
|
__RCSID("$NetBSD: lstOpen.c,v 1.13 2020/07/03 08:37:57 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -76,12 +76,11 @@ ReturnStatus
|
|||||||
Lst_Open(Lst l)
|
Lst_Open(Lst l)
|
||||||
{
|
{
|
||||||
if (LstValid (l) == FALSE) {
|
if (LstValid (l) == FALSE) {
|
||||||
return (FAILURE);
|
return FAILURE;
|
||||||
}
|
}
|
||||||
(l)->isOpen = TRUE;
|
(l)->isOpen = TRUE;
|
||||||
(l)->atEnd = LstIsEmpty (l) ? Head : Unknown;
|
(l)->atEnd = LstIsEmpty (l) ? Head : Unknown;
|
||||||
(l)->curPtr = NULL;
|
(l)->curPtr = NULL;
|
||||||
|
|
||||||
return (SUCCESS);
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstPrev.c,v 1.3 2008/12/13 15:19:29 dsl Exp $ */
|
/* $NetBSD: lstPrev.c,v 1.4 2020/07/03 08:37:57 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstPrev.c,v 1.3 2008/12/13 15:19:29 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstPrev.c,v 1.4 2020/07/03 08:37:57 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstSucc.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstSucc.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstPrev.c,v 1.3 2008/12/13 15:19:29 dsl Exp $");
|
__RCSID("$NetBSD: lstPrev.c,v 1.4 2020/07/03 08:37:57 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -73,7 +73,6 @@ Lst_Prev(LstNode ln)
|
|||||||
if (ln == NULL) {
|
if (ln == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
return (ln->prevPtr);
|
return ln->prevPtr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstRemove.c,v 1.16 2014/09/07 20:55:34 joerg Exp $ */
|
/* $NetBSD: lstRemove.c,v 1.17 2020/07/03 08:37:57 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstRemove.c,v 1.16 2014/09/07 20:55:34 joerg Exp $";
|
static char rcsid[] = "$NetBSD: lstRemove.c,v 1.17 2020/07/03 08:37:57 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstRemove.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstRemove.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstRemove.c,v 1.16 2014/09/07 20:55:34 joerg Exp $");
|
__RCSID("$NetBSD: lstRemove.c,v 1.17 2020/07/03 08:37:57 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -73,9 +73,8 @@ Lst_Remove(Lst l, LstNode ln)
|
|||||||
List list = l;
|
List list = l;
|
||||||
ListNode lNode = ln;
|
ListNode lNode = ln;
|
||||||
|
|
||||||
if (!LstValid (l) ||
|
if (!LstValid (l) || !LstNodeValid (ln, l)) {
|
||||||
!LstNodeValid (ln, l)) {
|
return FAILURE;
|
||||||
return (FAILURE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -131,6 +130,5 @@ Lst_Remove(Lst l, LstNode ln)
|
|||||||
lNode->flags |= LN_DELETED;
|
lNode->flags |= LN_DELETED;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (SUCCESS);
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstReplace.c,v 1.13 2009/01/23 21:26:30 dsl Exp $ */
|
/* $NetBSD: lstReplace.c,v 1.14 2020/07/03 08:37:57 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstReplace.c,v 1.13 2009/01/23 21:26:30 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstReplace.c,v 1.14 2020/07/03 08:37:57 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstReplace.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstReplace.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstReplace.c,v 1.13 2009/01/23 21:26:30 dsl Exp $");
|
__RCSID("$NetBSD: lstReplace.c,v 1.14 2020/07/03 08:37:57 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -69,10 +69,9 @@ ReturnStatus
|
|||||||
Lst_Replace(LstNode ln, void *d)
|
Lst_Replace(LstNode ln, void *d)
|
||||||
{
|
{
|
||||||
if (ln == NULL) {
|
if (ln == NULL) {
|
||||||
return (FAILURE);
|
return FAILURE;
|
||||||
} else {
|
} else {
|
||||||
(ln)->datum = d;
|
(ln)->datum = d;
|
||||||
return (SUCCESS);
|
return SUCCESS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: lstSucc.c,v 1.13 2008/12/13 15:19:29 dsl Exp $ */
|
/* $NetBSD: lstSucc.c,v 1.14 2020/07/03 08:37:57 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -33,14 +33,14 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: lstSucc.c,v 1.13 2008/12/13 15:19:29 dsl Exp $";
|
static char rcsid[] = "$NetBSD: lstSucc.c,v 1.14 2020/07/03 08:37:57 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)lstSucc.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)lstSucc.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: lstSucc.c,v 1.13 2008/12/13 15:19:29 dsl Exp $");
|
__RCSID("$NetBSD: lstSucc.c,v 1.14 2020/07/03 08:37:57 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -73,7 +73,6 @@ Lst_Succ(LstNode ln)
|
|||||||
if (ln == NULL) {
|
if (ln == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
return (ln->nextPtr);
|
return ln->nextPtr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: main.c,v 1.274 2020/03/30 02:41:06 sjg Exp $ */
|
/* $NetBSD: main.c,v 1.279 2020/07/03 08:13:23 rillig 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.274 2020/03/30 02:41:06 sjg Exp $";
|
static char rcsid[] = "$NetBSD: main.c,v 1.279 2020/07/03 08:13:23 rillig 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.274 2020/03/30 02:41:06 sjg Exp $");
|
__RCSID("$NetBSD: main.c,v 1.279 2020/07/03 08:13:23 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -475,7 +475,7 @@ rearg:
|
|||||||
case 'B':
|
case 'B':
|
||||||
compatMake = TRUE;
|
compatMake = TRUE;
|
||||||
Var_Append(MAKEFLAGS, "-B", VAR_GLOBAL);
|
Var_Append(MAKEFLAGS, "-B", VAR_GLOBAL);
|
||||||
Var_Set(MAKE_MODE, "compat", VAR_GLOBAL, 0);
|
Var_Set(MAKE_MODE, "compat", VAR_GLOBAL);
|
||||||
break;
|
break;
|
||||||
case 'C':
|
case 'C':
|
||||||
if (chdir(argvalue) == -1) {
|
if (chdir(argvalue) == -1) {
|
||||||
@ -499,7 +499,7 @@ rearg:
|
|||||||
break;
|
break;
|
||||||
case 'D':
|
case 'D':
|
||||||
if (argvalue == NULL || argvalue[0] == 0) goto noarg;
|
if (argvalue == NULL || argvalue[0] == 0) goto noarg;
|
||||||
Var_Set(argvalue, "1", VAR_GLOBAL, 0);
|
Var_Set(argvalue, "1", VAR_GLOBAL);
|
||||||
Var_Append(MAKEFLAGS, "-D", VAR_GLOBAL);
|
Var_Append(MAKEFLAGS, "-D", VAR_GLOBAL);
|
||||||
Var_Append(MAKEFLAGS, argvalue, VAR_GLOBAL);
|
Var_Append(MAKEFLAGS, argvalue, VAR_GLOBAL);
|
||||||
break;
|
break;
|
||||||
@ -598,7 +598,7 @@ rearg:
|
|||||||
}
|
}
|
||||||
Var_Append(MAKEFLAGS, "-j", VAR_GLOBAL);
|
Var_Append(MAKEFLAGS, "-j", VAR_GLOBAL);
|
||||||
Var_Append(MAKEFLAGS, argvalue, VAR_GLOBAL);
|
Var_Append(MAKEFLAGS, argvalue, VAR_GLOBAL);
|
||||||
Var_Set(".MAKE.JOBS", argvalue, VAR_GLOBAL, 0);
|
Var_Set(".MAKE.JOBS", argvalue, VAR_GLOBAL);
|
||||||
maxJobTokens = maxJobs;
|
maxJobTokens = maxJobs;
|
||||||
break;
|
break;
|
||||||
case 'k':
|
case 'k':
|
||||||
@ -776,7 +776,7 @@ Main_SetObjdir(const char *fmt, ...)
|
|||||||
path, strerror(errno));
|
path, strerror(errno));
|
||||||
} else {
|
} else {
|
||||||
strncpy(objdir, path, MAXPATHLEN);
|
strncpy(objdir, path, MAXPATHLEN);
|
||||||
Var_Set(".OBJDIR", objdir, VAR_GLOBAL, 0);
|
Var_Set(".OBJDIR", objdir, VAR_GLOBAL);
|
||||||
setenv("PWD", objdir, 1);
|
setenv("PWD", objdir, 1);
|
||||||
Dir_InitDot();
|
Dir_InitDot();
|
||||||
purge_cached_realpaths();
|
purge_cached_realpaths();
|
||||||
@ -822,7 +822,7 @@ Main_SetVarObjdir(const char *var, const char *suffix)
|
|||||||
static int
|
static int
|
||||||
ReadAllMakefiles(const void *p, const void *q)
|
ReadAllMakefiles(const void *p, const void *q)
|
||||||
{
|
{
|
||||||
return (ReadMakefile(p, q) == 0);
|
return ReadMakefile(p, q) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -838,7 +838,7 @@ str2Lst_Append(Lst lp, char *str, const char *sep)
|
|||||||
(void)Lst_AtEnd(lp, cp);
|
(void)Lst_AtEnd(lp, cp);
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
return (n);
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SIGINFO
|
#ifdef SIGINFO
|
||||||
@ -1096,13 +1096,13 @@ main(int argc, char **argv)
|
|||||||
*/
|
*/
|
||||||
Var_Init(); /* Initialize the lists of variables for
|
Var_Init(); /* Initialize the lists of variables for
|
||||||
* parsing arguments */
|
* parsing arguments */
|
||||||
Var_Set(".MAKE.OS", utsname.sysname, VAR_GLOBAL, 0);
|
Var_Set(".MAKE.OS", utsname.sysname, VAR_GLOBAL);
|
||||||
Var_Set("MACHINE", machine, VAR_GLOBAL, 0);
|
Var_Set("MACHINE", machine, VAR_GLOBAL);
|
||||||
Var_Set("MACHINE_ARCH", machine_arch, VAR_GLOBAL, 0);
|
Var_Set("MACHINE_ARCH", machine_arch, VAR_GLOBAL);
|
||||||
#ifdef MAKE_VERSION
|
#ifdef MAKE_VERSION
|
||||||
Var_Set("MAKE_VERSION", MAKE_VERSION, VAR_GLOBAL, 0);
|
Var_Set("MAKE_VERSION", MAKE_VERSION, VAR_GLOBAL);
|
||||||
#endif
|
#endif
|
||||||
Var_Set(".newline", "\n", VAR_GLOBAL, 0); /* handy for :@ loops */
|
Var_Set(".newline", "\n", VAR_GLOBAL); /* handy for :@ loops */
|
||||||
/*
|
/*
|
||||||
* This is the traditional preference for makefiles.
|
* This is the traditional preference for makefiles.
|
||||||
*/
|
*/
|
||||||
@ -1110,8 +1110,8 @@ main(int argc, char **argv)
|
|||||||
# define MAKEFILE_PREFERENCE_LIST "makefile Makefile"
|
# define MAKEFILE_PREFERENCE_LIST "makefile Makefile"
|
||||||
#endif
|
#endif
|
||||||
Var_Set(MAKEFILE_PREFERENCE, MAKEFILE_PREFERENCE_LIST,
|
Var_Set(MAKEFILE_PREFERENCE, MAKEFILE_PREFERENCE_LIST,
|
||||||
VAR_GLOBAL, 0);
|
VAR_GLOBAL);
|
||||||
Var_Set(MAKE_DEPENDFILE, ".depend", VAR_GLOBAL, 0);
|
Var_Set(MAKE_DEPENDFILE, ".depend", VAR_GLOBAL);
|
||||||
|
|
||||||
create = Lst_Init(FALSE);
|
create = Lst_Init(FALSE);
|
||||||
makefiles = Lst_Init(FALSE);
|
makefiles = Lst_Init(FALSE);
|
||||||
@ -1165,14 +1165,14 @@ main(int argc, char **argv)
|
|||||||
p1 = argv[0]; /* realpath failed */
|
p1 = argv[0]; /* realpath failed */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Var_Set("MAKE", p1, VAR_GLOBAL, 0);
|
Var_Set("MAKE", p1, VAR_GLOBAL);
|
||||||
Var_Set(".MAKE", p1, VAR_GLOBAL, 0);
|
Var_Set(".MAKE", p1, VAR_GLOBAL);
|
||||||
Var_Set(MAKEFLAGS, "", VAR_GLOBAL, 0);
|
Var_Set(MAKEFLAGS, "", VAR_GLOBAL);
|
||||||
Var_Set(MAKEOVERRIDES, "", VAR_GLOBAL, 0);
|
Var_Set(MAKEOVERRIDES, "", VAR_GLOBAL);
|
||||||
Var_Set("MFLAGS", "", VAR_GLOBAL, 0);
|
Var_Set("MFLAGS", "", VAR_GLOBAL);
|
||||||
Var_Set(".ALLTARGETS", "", VAR_GLOBAL, 0);
|
Var_Set(".ALLTARGETS", "", VAR_GLOBAL);
|
||||||
/* some makefiles need to know this */
|
/* some makefiles need to know this */
|
||||||
Var_Set(MAKE_LEVEL ".ENV", MAKE_LEVEL_ENV, VAR_CMD, 0);
|
Var_Set(MAKE_LEVEL ".ENV", MAKE_LEVEL_ENV, VAR_CMD);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set some other useful macros
|
* Set some other useful macros
|
||||||
@ -1184,11 +1184,11 @@ main(int argc, char **argv)
|
|||||||
if (makelevel < 0)
|
if (makelevel < 0)
|
||||||
makelevel = 0;
|
makelevel = 0;
|
||||||
snprintf(tmp, sizeof(tmp), "%d", makelevel);
|
snprintf(tmp, sizeof(tmp), "%d", makelevel);
|
||||||
Var_Set(MAKE_LEVEL, tmp, VAR_GLOBAL, 0);
|
Var_Set(MAKE_LEVEL, tmp, VAR_GLOBAL);
|
||||||
snprintf(tmp, sizeof(tmp), "%u", myPid);
|
snprintf(tmp, sizeof(tmp), "%u", myPid);
|
||||||
Var_Set(".MAKE.PID", tmp, VAR_GLOBAL, 0);
|
Var_Set(".MAKE.PID", tmp, VAR_GLOBAL);
|
||||||
snprintf(tmp, sizeof(tmp), "%u", getppid());
|
snprintf(tmp, sizeof(tmp), "%u", getppid());
|
||||||
Var_Set(".MAKE.PPID", tmp, VAR_GLOBAL, 0);
|
Var_Set(".MAKE.PPID", tmp, VAR_GLOBAL);
|
||||||
}
|
}
|
||||||
if (makelevel > 0) {
|
if (makelevel > 0) {
|
||||||
char pn[1024];
|
char pn[1024];
|
||||||
@ -1269,7 +1269,7 @@ main(int argc, char **argv)
|
|||||||
free(ptmp2);
|
free(ptmp2);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
Var_Set(".CURDIR", curdir, VAR_GLOBAL, 0);
|
Var_Set(".CURDIR", curdir, VAR_GLOBAL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find the .OBJDIR. If MAKEOBJDIRPREFIX, or failing that,
|
* Find the .OBJDIR. If MAKEOBJDIRPREFIX, or failing that,
|
||||||
@ -1319,7 +1319,7 @@ main(int argc, char **argv)
|
|||||||
Var_Append(".TARGETS", name, VAR_GLOBAL);
|
Var_Append(".TARGETS", name, VAR_GLOBAL);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
Var_Set(".TARGETS", "", VAR_GLOBAL, 0);
|
Var_Set(".TARGETS", "", VAR_GLOBAL);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1445,6 +1445,7 @@ main(int argc, char **argv)
|
|||||||
if (!printVars)
|
if (!printVars)
|
||||||
Main_ExportMAKEFLAGS(TRUE); /* initial export */
|
Main_ExportMAKEFLAGS(TRUE); /* initial export */
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* For compatibility, look at the directories in the VPATH variable
|
* For compatibility, look at the directories in the VPATH variable
|
||||||
* and add them to the search path, if the variable is defined. The
|
* and add them to the search path, if the variable is defined. The
|
||||||
@ -1552,7 +1553,7 @@ ReadMakefile(const void *p, const void *q MAKE_ATTR_UNUSED)
|
|||||||
|
|
||||||
if (!strcmp(fname, "-")) {
|
if (!strcmp(fname, "-")) {
|
||||||
Parse_File(NULL /*stdin*/, -1);
|
Parse_File(NULL /*stdin*/, -1);
|
||||||
Var_Set("MAKEFILE", "", VAR_INTERNAL, 0);
|
Var_Set("MAKEFILE", "", VAR_INTERNAL);
|
||||||
} else {
|
} else {
|
||||||
/* if we've chdir'd, rebuild the path name */
|
/* if we've chdir'd, rebuild the path name */
|
||||||
if (strcmp(curdir, objdir) && *fname != '/') {
|
if (strcmp(curdir, objdir) && *fname != '/') {
|
||||||
@ -1590,7 +1591,7 @@ ReadMakefile(const void *p, const void *q MAKE_ATTR_UNUSED)
|
|||||||
if (!name || (fd = open(name, O_RDONLY)) == -1) {
|
if (!name || (fd = open(name, O_RDONLY)) == -1) {
|
||||||
free(name);
|
free(name);
|
||||||
free(path);
|
free(path);
|
||||||
return(-1);
|
return -1;
|
||||||
}
|
}
|
||||||
fname = name;
|
fname = name;
|
||||||
/*
|
/*
|
||||||
@ -1600,11 +1601,11 @@ ReadMakefile(const void *p, const void *q MAKE_ATTR_UNUSED)
|
|||||||
*/
|
*/
|
||||||
found:
|
found:
|
||||||
if (!doing_depend)
|
if (!doing_depend)
|
||||||
Var_Set("MAKEFILE", fname, VAR_INTERNAL, 0);
|
Var_Set("MAKEFILE", fname, VAR_INTERNAL);
|
||||||
Parse_File(fname, fd);
|
Parse_File(fname, fd);
|
||||||
}
|
}
|
||||||
free(path);
|
free(path);
|
||||||
return(0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1889,6 +1890,8 @@ void
|
|||||||
Finish(int errors)
|
Finish(int errors)
|
||||||
/* number of errors encountered in Make_Make */
|
/* number of errors encountered in Make_Make */
|
||||||
{
|
{
|
||||||
|
if (dieQuietly(NULL, -1))
|
||||||
|
exit(2);
|
||||||
Fatal("%d error%s", errors, errors == 1 ? "" : "s");
|
Fatal("%d error%s", errors, errors == 1 ? "" : "s");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2018,8 +2021,9 @@ cached_realpath(const char *pathname, char *resolved)
|
|||||||
/* a hit */
|
/* a hit */
|
||||||
strlcpy(resolved, rp, MAXPATHLEN);
|
strlcpy(resolved, rp, MAXPATHLEN);
|
||||||
} else if ((rp = realpath(pathname, resolved)) != NULL) {
|
} else if ((rp = realpath(pathname, resolved)) != NULL) {
|
||||||
Var_Set(pathname, rp, cache, 0);
|
Var_Set(pathname, rp, cache);
|
||||||
}
|
} /* else should we negative-cache? */
|
||||||
|
|
||||||
free(cp);
|
free(cp);
|
||||||
return rp ? resolved : NULL;
|
return rp ? resolved : NULL;
|
||||||
}
|
}
|
||||||
@ -2041,6 +2045,27 @@ addErrorCMD(void *cmdp, void *gnp MAKE_ATTR_UNUSED)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return true if we should die without noise.
|
||||||
|
* For example our failing child was a sub-make
|
||||||
|
* or failure happend elsewhere.
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
dieQuietly(GNode *gn, int bf)
|
||||||
|
{
|
||||||
|
static int quietly = -1;
|
||||||
|
|
||||||
|
if (quietly < 0) {
|
||||||
|
if (DEBUG(JOB) || getBoolean(".MAKE.DIE_QUIETLY", 1) == 0)
|
||||||
|
quietly = 0;
|
||||||
|
else if (bf >= 0)
|
||||||
|
quietly = bf;
|
||||||
|
else
|
||||||
|
quietly = (gn) ? ((gn->type & (OP_MAKE)) != 0) : 0;
|
||||||
|
}
|
||||||
|
return quietly;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PrintOnError(GNode *gn, const char *s)
|
PrintOnError(GNode *gn, const char *s)
|
||||||
{
|
{
|
||||||
@ -2048,6 +2073,10 @@ PrintOnError(GNode *gn, const char *s)
|
|||||||
char tmp[64];
|
char tmp[64];
|
||||||
char *cp;
|
char *cp;
|
||||||
|
|
||||||
|
/* we generally want to keep quiet if a sub-make died */
|
||||||
|
if (dieQuietly(gn, -1))
|
||||||
|
return;
|
||||||
|
|
||||||
if (s)
|
if (s)
|
||||||
printf("%s", s);
|
printf("%s", s);
|
||||||
|
|
||||||
@ -2059,7 +2088,7 @@ 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);
|
||||||
Var_Delete(".ERROR_CMD", VAR_GLOBAL);
|
Var_Delete(".ERROR_CMD", VAR_GLOBAL);
|
||||||
Lst_ForEach(gn->commands, addErrorCMD, gn);
|
Lst_ForEach(gn->commands, addErrorCMD, gn);
|
||||||
}
|
}
|
||||||
@ -2195,7 +2224,7 @@ s2Boolean(const char *s, Boolean bf)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (bf);
|
return bf;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2219,5 +2248,5 @@ getBoolean(const char *name, Boolean bf)
|
|||||||
free(cp);
|
free(cp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (bf);
|
return bf;
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: make.c,v 1.96 2016/11/10 23:41:58 sjg Exp $ */
|
/* $NetBSD: make.c,v 1.99 2020/07/03 08:13:23 rillig 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: make.c,v 1.96 2016/11/10 23:41:58 sjg Exp $";
|
static char rcsid[] = "$NetBSD: make.c,v 1.99 2020/07/03 08:13:23 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)make.c 8.1 (Berkeley) 6/6/93";
|
static char sccsid[] = "@(#)make.c 8.1 (Berkeley) 6/6/93";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: make.c,v 1.96 2016/11/10 23:41:58 sjg Exp $");
|
__RCSID("$NetBSD: make.c,v 1.99 2020/07/03 08:13:23 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -175,7 +175,7 @@ Make_TimeStamp(GNode *pgn, GNode *cgn)
|
|||||||
if (pgn->cmgn == NULL || cgn->mtime > pgn->cmgn->mtime) {
|
if (pgn->cmgn == NULL || cgn->mtime > pgn->cmgn->mtime) {
|
||||||
pgn->cmgn = cgn;
|
pgn->cmgn = cgn;
|
||||||
}
|
}
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -348,7 +348,7 @@ Make_OODate(GNode *gn)
|
|||||||
Lst_ForEach(gn->parents, MakeTimeStamp, gn);
|
Lst_ForEach(gn->parents, MakeTimeStamp, gn);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (oodate);
|
return oodate;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -380,7 +380,7 @@ MakeAddChild(void *gnp, void *lp)
|
|||||||
gn->name, gn->cohort_num);
|
gn->name, gn->cohort_num);
|
||||||
(void)Lst_EnQueue(l, gn);
|
(void)Lst_EnQueue(l, gn);
|
||||||
}
|
}
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -410,7 +410,7 @@ MakeFindChild(void *gnp, void *pgnp)
|
|||||||
Make_TimeStamp(pgn, gn);
|
Make_TimeStamp(pgn, gn);
|
||||||
pgn->unmade--;
|
pgn->unmade--;
|
||||||
|
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -535,7 +535,7 @@ MakeHandleUse(void *cgnp, void *pgnp)
|
|||||||
cgn->type |= OP_MARK;
|
cgn->type |= OP_MARK;
|
||||||
|
|
||||||
if ((cgn->type & (OP_USE|OP_USEBEFORE)) == 0)
|
if ((cgn->type & (OP_USE|OP_USEBEFORE)) == 0)
|
||||||
return (0);
|
return 0;
|
||||||
|
|
||||||
if (unmarked)
|
if (unmarked)
|
||||||
Make_HandleUse(cgn, pgn);
|
Make_HandleUse(cgn, pgn);
|
||||||
@ -551,7 +551,7 @@ MakeHandleUse(void *cgnp, void *pgnp)
|
|||||||
Lst_Remove(pgn->children, ln);
|
Lst_Remove(pgn->children, ln);
|
||||||
pgn->unmade--;
|
pgn->unmade--;
|
||||||
}
|
}
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -831,9 +831,9 @@ Make_Update(GNode *cgn)
|
|||||||
while ((ln = Lst_Next(cgn->iParents)) != NULL) {
|
while ((ln = Lst_Next(cgn->iParents)) != NULL) {
|
||||||
pgn = (GNode *)Lst_Datum(ln);
|
pgn = (GNode *)Lst_Datum(ln);
|
||||||
if (pgn->flags & REMAKE) {
|
if (pgn->flags & REMAKE) {
|
||||||
Var_Set(IMPSRC, cname, pgn, 0);
|
Var_Set(IMPSRC, cname, pgn);
|
||||||
if (cpref != NULL)
|
if (cpref != NULL)
|
||||||
Var_Set(PREFIX, cpref, pgn, 0);
|
Var_Set(PREFIX, cpref, pgn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(p1);
|
free(p1);
|
||||||
@ -869,7 +869,7 @@ MakeUnmark(void *cgnp, void *pgnp MAKE_ATTR_UNUSED)
|
|||||||
GNode *cgn = (GNode *)cgnp;
|
GNode *cgn = (GNode *)cgnp;
|
||||||
|
|
||||||
cgn->type &= ~OP_MARK;
|
cgn->type &= ~OP_MARK;
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -886,7 +886,7 @@ MakeAddAllSrc(void *cgnp, void *pgnp)
|
|||||||
GNode *pgn = (GNode *)pgnp;
|
GNode *pgn = (GNode *)pgnp;
|
||||||
|
|
||||||
if (cgn->type & OP_MARK)
|
if (cgn->type & OP_MARK)
|
||||||
return (0);
|
return 0;
|
||||||
cgn->type |= OP_MARK;
|
cgn->type |= OP_MARK;
|
||||||
|
|
||||||
if ((cgn->type & (OP_EXEC|OP_USE|OP_USEBEFORE|OP_INVISIBLE)) == 0) {
|
if ((cgn->type & (OP_EXEC|OP_USE|OP_USEBEFORE|OP_INVISIBLE)) == 0) {
|
||||||
@ -932,7 +932,7 @@ MakeAddAllSrc(void *cgnp, void *pgnp)
|
|||||||
}
|
}
|
||||||
free(p1);
|
free(p1);
|
||||||
}
|
}
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -967,15 +967,15 @@ Make_DoAllVar(GNode *gn)
|
|||||||
Lst_ForEach(gn->children, MakeAddAllSrc, gn);
|
Lst_ForEach(gn->children, MakeAddAllSrc, gn);
|
||||||
|
|
||||||
if (!Var_Exists (OODATE, gn)) {
|
if (!Var_Exists (OODATE, gn)) {
|
||||||
Var_Set(OODATE, "", gn, 0);
|
Var_Set(OODATE, "", gn);
|
||||||
}
|
}
|
||||||
if (!Var_Exists (ALLSRC, gn)) {
|
if (!Var_Exists (ALLSRC, gn)) {
|
||||||
Var_Set(ALLSRC, "", gn, 0);
|
Var_Set(ALLSRC, "", gn);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gn->type & OP_JOIN) {
|
if (gn->type & OP_JOIN) {
|
||||||
char *p1;
|
char *p1;
|
||||||
Var_Set(TARGET, Var_Value(ALLSRC, gn, &p1), gn, 0);
|
Var_Set(TARGET, Var_Value(ALLSRC, gn, &p1), gn);
|
||||||
free(p1);
|
free(p1);
|
||||||
}
|
}
|
||||||
gn->flags |= DONE_ALLSRC;
|
gn->flags |= DONE_ALLSRC;
|
||||||
@ -1119,7 +1119,7 @@ MakeStartJobs(void)
|
|||||||
fprintf(debug_file, "out-of-date\n");
|
fprintf(debug_file, "out-of-date\n");
|
||||||
}
|
}
|
||||||
if (queryFlag) {
|
if (queryFlag) {
|
||||||
return (TRUE);
|
return TRUE;
|
||||||
}
|
}
|
||||||
Make_DoAllVar(gn);
|
Make_DoAllVar(gn);
|
||||||
Job_Make(gn);
|
Job_Make(gn);
|
||||||
@ -1145,7 +1145,7 @@ MakeStartJobs(void)
|
|||||||
if (have_token)
|
if (have_token)
|
||||||
Job_TokenReturn();
|
Job_TokenReturn();
|
||||||
|
|
||||||
return (FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1324,14 +1324,14 @@ Make_ExpandUse(Lst targs)
|
|||||||
continue;
|
continue;
|
||||||
*eoa = '\0';
|
*eoa = '\0';
|
||||||
*eon = '\0';
|
*eon = '\0';
|
||||||
Var_Set(MEMBER, eoa + 1, gn, 0);
|
Var_Set(MEMBER, eoa + 1, gn);
|
||||||
Var_Set(ARCHIVE, gn->name, gn, 0);
|
Var_Set(ARCHIVE, gn->name, gn);
|
||||||
*eoa = '(';
|
*eoa = '(';
|
||||||
*eon = ')';
|
*eon = ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
(void)Dir_MTime(gn, 0);
|
(void)Dir_MTime(gn, 0);
|
||||||
Var_Set(TARGET, gn->path ? gn->path : gn->name, gn, 0);
|
Var_Set(TARGET, gn->path ? gn->path : gn->name, gn);
|
||||||
Lst_ForEach(gn->children, MakeUnmark, gn);
|
Lst_ForEach(gn->children, MakeUnmark, gn);
|
||||||
Lst_ForEach(gn->children, MakeHandleUse, gn);
|
Lst_ForEach(gn->children, MakeHandleUse, gn);
|
||||||
|
|
||||||
@ -1509,7 +1509,7 @@ Make_Run(Lst targs)
|
|||||||
* next loop... (we won't actually start any, of course, this is just
|
* next loop... (we won't actually start any, of course, this is just
|
||||||
* to see if any of the targets was out of date)
|
* to see if any of the targets was out of date)
|
||||||
*/
|
*/
|
||||||
return (MakeStartJobs());
|
return MakeStartJobs();
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Initialization. At the moment, no jobs are running and until some
|
* Initialization. At the moment, no jobs are running and until some
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: make.h,v 1.107 2020/04/03 03:35:16 sjg Exp $ */
|
/* $NetBSD: make.h,v 1.109 2020/07/02 15:14:38 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -503,6 +503,7 @@ void Make_DoAllVar(GNode *);
|
|||||||
Boolean Make_Run(Lst);
|
Boolean Make_Run(Lst);
|
||||||
char * Check_Cwd_Cmd(const char *);
|
char * Check_Cwd_Cmd(const char *);
|
||||||
void Check_Cwd(const char **);
|
void Check_Cwd(const char **);
|
||||||
|
int dieQuietly(GNode *, int);
|
||||||
void PrintOnError(GNode *, const char *);
|
void PrintOnError(GNode *, const char *);
|
||||||
void Main_ExportMAKEFLAGS(Boolean);
|
void Main_ExportMAKEFLAGS(Boolean);
|
||||||
Boolean Main_SetObjdir(const char *, ...) MAKE_ATTR_PRINTFLIKE(1, 2);
|
Boolean Main_SetObjdir(const char *, ...) MAKE_ATTR_PRINTFLIKE(1, 2);
|
||||||
@ -511,10 +512,6 @@ int str2Lst_Append(Lst, char *, const char *);
|
|||||||
int cached_lstat(const char *, void *);
|
int cached_lstat(const char *, void *);
|
||||||
int cached_stat(const char *, void *);
|
int cached_stat(const char *, void *);
|
||||||
|
|
||||||
#define VARF_UNDEFERR 1
|
|
||||||
#define VARF_WANTRES 2
|
|
||||||
#define VARF_ASSIGN 4
|
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#define UNCONST(ptr) ({ \
|
#define UNCONST(ptr) ({ \
|
||||||
union __unconst { \
|
union __unconst { \
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: make_malloc.c,v 1.11 2017/04/16 20:20:24 dholland Exp $ */
|
/* $NetBSD: make_malloc.c,v 1.12 2020/07/03 08:02:55 rillig Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2009 The NetBSD Foundation, Inc.
|
* Copyright (c) 2009 The NetBSD Foundation, Inc.
|
||||||
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
#ifdef MAKE_NATIVE
|
#ifdef MAKE_NATIVE
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
__RCSID("$NetBSD: make_malloc.c,v 1.11 2017/04/16 20:20:24 dholland Exp $");
|
__RCSID("$NetBSD: make_malloc.c,v 1.12 2020/07/03 08:02:55 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -63,7 +63,7 @@ bmake_malloc(size_t len)
|
|||||||
|
|
||||||
if ((p = malloc(len)) == NULL)
|
if ((p = malloc(len)) == NULL)
|
||||||
enomem();
|
enomem();
|
||||||
return(p);
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -102,7 +102,7 @@ bmake_strndup(const char *str, size_t max_len)
|
|||||||
memcpy(p, str, len);
|
memcpy(p, str, len);
|
||||||
p[len] = '\0';
|
p[len] = '\0';
|
||||||
|
|
||||||
return(p);
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -114,6 +114,6 @@ bmake_realloc(void *ptr, size_t size)
|
|||||||
{
|
{
|
||||||
if ((ptr = realloc(ptr, size)) == NULL)
|
if ((ptr = realloc(ptr, size)) == NULL)
|
||||||
enomem();
|
enomem();
|
||||||
return(ptr);
|
return ptr;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: meta.c,v 1.81 2020/04/03 03:32:28 sjg Exp $ */
|
/* $NetBSD: meta.c,v 1.85 2020/07/03 08:13:23 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Implement 'meta' mode.
|
* Implement 'meta' mode.
|
||||||
@ -174,8 +174,11 @@ filemon_read(FILE *mfp, int fd)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* rewind */
|
/* rewind */
|
||||||
(void)lseek(fd, (off_t)0, SEEK_SET);
|
if (lseek(fd, (off_t)0, SEEK_SET) < 0) {
|
||||||
|
error = errno;
|
||||||
|
warn("Could not rewind filemon");
|
||||||
|
fprintf(mfp, "\n");
|
||||||
|
} else {
|
||||||
error = 0;
|
error = 0;
|
||||||
fprintf(mfp, "\n-- filemon acquired metadata --\n");
|
fprintf(mfp, "\n-- filemon acquired metadata --\n");
|
||||||
|
|
||||||
@ -183,6 +186,7 @@ filemon_read(FILE *mfp, int fd)
|
|||||||
if ((int)fwrite(buf, 1, n, mfp) < n)
|
if ((int)fwrite(buf, 1, n, mfp) < n)
|
||||||
error = EIO;
|
error = EIO;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
fflush(mfp);
|
fflush(mfp);
|
||||||
if (close(fd) < 0)
|
if (close(fd) < 0)
|
||||||
error = errno;
|
error = errno;
|
||||||
@ -304,7 +308,7 @@ meta_name(char *mname, size_t mnamelen,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(tp);
|
free(tp);
|
||||||
return (mname);
|
return mname;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -355,7 +359,7 @@ is_submake(void *cmdp, void *gnp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
free(mp);
|
free(mp);
|
||||||
return (rc);
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef struct meta_file_s {
|
typedef struct meta_file_s {
|
||||||
@ -545,7 +549,7 @@ meta_create(BuildMon *pbm, GNode *gn)
|
|||||||
free(p[i]);
|
free(p[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (mf.fp);
|
return mf.fp;
|
||||||
}
|
}
|
||||||
|
|
||||||
static Boolean
|
static Boolean
|
||||||
@ -570,7 +574,7 @@ meta_init(void)
|
|||||||
{
|
{
|
||||||
#ifdef USE_FILEMON
|
#ifdef USE_FILEMON
|
||||||
/* this allows makefiles to test if we have filemon support */
|
/* this allows makefiles to test if we have filemon support */
|
||||||
Var_Set(".MAKE.PATH_FILEMON", filemon_path(), VAR_GLOBAL, 0);
|
Var_Set(".MAKE.PATH_FILEMON", filemon_path(), VAR_GLOBAL);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -616,7 +620,7 @@ meta_mode_init(const char *make_mode)
|
|||||||
* This works be cause :H will generate '.' if there is no /
|
* This works be cause :H will generate '.' if there is no /
|
||||||
* and :tA will resolve that to cwd.
|
* and :tA will resolve that to cwd.
|
||||||
*/
|
*/
|
||||||
Var_Set(MAKE_META_PREFIX, "Building ${.TARGET:H:tA}/${.TARGET:T}", VAR_GLOBAL, 0);
|
Var_Set(MAKE_META_PREFIX, "Building ${.TARGET:H:tA}/${.TARGET:T}", VAR_GLOBAL);
|
||||||
}
|
}
|
||||||
if (once)
|
if (once)
|
||||||
return;
|
return;
|
||||||
@ -790,12 +794,12 @@ meta_job_error(Job *job, GNode *gn, int flags, int status)
|
|||||||
"(ignored)" : "");
|
"(ignored)" : "");
|
||||||
}
|
}
|
||||||
if (gn) {
|
if (gn) {
|
||||||
Var_Set(".ERROR_TARGET", gn->path ? gn->path : gn->name, VAR_GLOBAL, 0);
|
Var_Set(".ERROR_TARGET", gn->path ? gn->path : gn->name, VAR_GLOBAL);
|
||||||
}
|
}
|
||||||
getcwd(cwd, sizeof(cwd));
|
getcwd(cwd, sizeof(cwd));
|
||||||
Var_Set(".ERROR_CWD", cwd, VAR_GLOBAL, 0);
|
Var_Set(".ERROR_CWD", cwd, VAR_GLOBAL);
|
||||||
if (pbm->meta_fname[0]) {
|
if (pbm->meta_fname[0]) {
|
||||||
Var_Set(".ERROR_META_FILE", pbm->meta_fname, VAR_GLOBAL, 0);
|
Var_Set(".ERROR_META_FILE", pbm->meta_fname, VAR_GLOBAL);
|
||||||
}
|
}
|
||||||
meta_job_finish(job);
|
meta_job_finish(job);
|
||||||
}
|
}
|
||||||
@ -951,7 +955,7 @@ prefix_match(void *p, void *q)
|
|||||||
const char *path = q;
|
const char *path = q;
|
||||||
size_t n = strlen(prefix);
|
size_t n = strlen(prefix);
|
||||||
|
|
||||||
return (0 == strncmp(path, prefix, n));
|
return strncmp(path, prefix, n) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1013,7 +1017,7 @@ meta_ignore(GNode *gn, const char *p)
|
|||||||
if (metaIgnorePatterns) {
|
if (metaIgnorePatterns) {
|
||||||
char *pm;
|
char *pm;
|
||||||
|
|
||||||
Var_Set(".p.", p, gn, 0);
|
Var_Set(".p.", p, gn);
|
||||||
pm = Var_Subst(NULL,
|
pm = Var_Subst(NULL,
|
||||||
"${" MAKE_META_IGNORE_PATTERNS ":@m@${.p.:M$m}@}",
|
"${" MAKE_META_IGNORE_PATTERNS ":@m@${.p.:M$m}@}",
|
||||||
gn, VARF_WANTRES);
|
gn, VARF_WANTRES);
|
||||||
@ -1241,8 +1245,8 @@ meta_oodate(GNode *gn, Boolean oodate)
|
|||||||
|
|
||||||
if (lastpid > 0) {
|
if (lastpid > 0) {
|
||||||
/* We need to remember these. */
|
/* We need to remember these. */
|
||||||
Var_Set(lcwd_vname, lcwd, VAR_GLOBAL, 0);
|
Var_Set(lcwd_vname, lcwd, VAR_GLOBAL);
|
||||||
Var_Set(ldir_vname, latestdir, VAR_GLOBAL, 0);
|
Var_Set(ldir_vname, latestdir, VAR_GLOBAL);
|
||||||
}
|
}
|
||||||
snprintf(lcwd_vname, sizeof(lcwd_vname), LCWD_VNAME_FMT, pid);
|
snprintf(lcwd_vname, sizeof(lcwd_vname), LCWD_VNAME_FMT, pid);
|
||||||
snprintf(ldir_vname, sizeof(ldir_vname), LDIR_VNAME_FMT, pid);
|
snprintf(ldir_vname, sizeof(ldir_vname), LDIR_VNAME_FMT, pid);
|
||||||
@ -1288,9 +1292,9 @@ meta_oodate(GNode *gn, Boolean oodate)
|
|||||||
child = atoi(p);
|
child = atoi(p);
|
||||||
if (child > 0) {
|
if (child > 0) {
|
||||||
snprintf(cldir, sizeof(cldir), LCWD_VNAME_FMT, child);
|
snprintf(cldir, sizeof(cldir), LCWD_VNAME_FMT, child);
|
||||||
Var_Set(cldir, lcwd, VAR_GLOBAL, 0);
|
Var_Set(cldir, lcwd, VAR_GLOBAL);
|
||||||
snprintf(cldir, sizeof(cldir), LDIR_VNAME_FMT, child);
|
snprintf(cldir, sizeof(cldir), LDIR_VNAME_FMT, child);
|
||||||
Var_Set(cldir, latestdir, VAR_GLOBAL, 0);
|
Var_Set(cldir, latestdir, VAR_GLOBAL);
|
||||||
#ifdef DEBUG_META_MODE
|
#ifdef DEBUG_META_MODE
|
||||||
if (DEBUG(META))
|
if (DEBUG(META))
|
||||||
fprintf(debug_file, "%s: %d: %d: cwd=%s lcwd=%s ldir=%s\n",
|
fprintf(debug_file, "%s: %d: %d: cwd=%s lcwd=%s ldir=%s\n",
|
||||||
@ -1305,8 +1309,8 @@ meta_oodate(GNode *gn, Boolean oodate)
|
|||||||
/* Update lcwd and latest directory. */
|
/* Update lcwd and latest directory. */
|
||||||
strlcpy(latestdir, p, sizeof(latestdir));
|
strlcpy(latestdir, p, sizeof(latestdir));
|
||||||
strlcpy(lcwd, p, sizeof(lcwd));
|
strlcpy(lcwd, p, sizeof(lcwd));
|
||||||
Var_Set(lcwd_vname, lcwd, VAR_GLOBAL, 0);
|
Var_Set(lcwd_vname, lcwd, VAR_GLOBAL);
|
||||||
Var_Set(ldir_vname, lcwd, VAR_GLOBAL, 0);
|
Var_Set(ldir_vname, lcwd, VAR_GLOBAL);
|
||||||
#ifdef DEBUG_META_MODE
|
#ifdef DEBUG_META_MODE
|
||||||
if (DEBUG(META))
|
if (DEBUG(META))
|
||||||
fprintf(debug_file, "%s: %d: cwd=%s ldir=%s\n", fname, lineno, cwd, lcwd);
|
fprintf(debug_file, "%s: %d: cwd=%s ldir=%s\n", fname, lineno, cwd, lcwd);
|
||||||
@ -1633,7 +1637,7 @@ meta_oodate(GNode *gn, Boolean oodate)
|
|||||||
* All we can sanely do is set it to .ALLSRC.
|
* All we can sanely do is set it to .ALLSRC.
|
||||||
*/
|
*/
|
||||||
Var_Delete(OODATE, gn);
|
Var_Delete(OODATE, gn);
|
||||||
Var_Set(OODATE, Var_Value(ALLSRC, gn, &cp), gn, 0);
|
Var_Set(OODATE, Var_Value(ALLSRC, gn, &cp), gn);
|
||||||
free(cp);
|
free(cp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: meta.h,v 1.6 2020/01/19 19:42:32 riastradh Exp $ */
|
/* $NetBSD: meta.h,v 1.7 2020/07/03 08:13:23 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Things needed for 'meta' mode.
|
* Things needed for 'meta' mode.
|
||||||
|
@ -1,3 +1,20 @@
|
|||||||
|
2020-06-28 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* sys/*.mk: make it easier for local*sys.mk to customize by
|
||||||
|
using ?=
|
||||||
|
|
||||||
|
2020-06-22 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* gendirdeps.mk (LOCAL_DEPENDS_GUARD): if we don't build at level 0
|
||||||
|
it is much safer to guard local depends with a simple check for
|
||||||
|
.MAKE.LEVEL > 0
|
||||||
|
|
||||||
|
2020-06-10 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* install-mk (MK_VERSION): 20200610
|
||||||
|
|
||||||
|
* mkopt.sh: this needs posix shell so #!/bin/sh should be ok
|
||||||
|
|
||||||
2020-06-06 Simon J Gerraty <sjg@beast.crufty.net>
|
2020-06-06 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
* install-mk (MK_VERSION): 20200606
|
* install-mk (MK_VERSION): 20200606
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
ChangeLog
|
ChangeLog
|
||||||
FILES
|
FILES
|
||||||
|
LICENSE
|
||||||
README
|
README
|
||||||
auto.obj.mk
|
auto.obj.mk
|
||||||
autoconf.mk
|
autoconf.mk
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# $Id: gendirdeps.mk,v 1.42 2020/05/16 23:21:48 sjg Exp $
|
# $Id: gendirdeps.mk,v 1.44 2020/06/23 04:21:51 sjg Exp $
|
||||||
|
|
||||||
# Copyright (c) 2011-2020, Simon J. Gerraty
|
# Copyright (c) 2011-2020, Simon J. Gerraty
|
||||||
# Copyright (c) 2010-2018, Juniper Networks, Inc.
|
# Copyright (c) 2010-2018, Juniper Networks, Inc.
|
||||||
@ -51,7 +51,7 @@ all:
|
|||||||
_CURDIR ?= ${.CURDIR}
|
_CURDIR ?= ${.CURDIR}
|
||||||
_OBJDIR ?= ${.OBJDIR}
|
_OBJDIR ?= ${.OBJDIR}
|
||||||
_OBJTOP ?= ${OBJTOP}
|
_OBJTOP ?= ${OBJTOP}
|
||||||
_OBJROOT ?= ${OBJROOT:U${_OBJTOP}}
|
_OBJROOT ?= ${OBJROOT:U${_OBJTOP:H}}
|
||||||
.if ${_OBJROOT:M*/}
|
.if ${_OBJROOT:M*/}
|
||||||
_slash=/
|
_slash=/
|
||||||
.else
|
.else
|
||||||
@ -339,6 +339,12 @@ CAT_DEPEND ?= .depend
|
|||||||
.PHONY: ${_DEPENDFILE}
|
.PHONY: ${_DEPENDFILE}
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
|
.if ${BUILD_AT_LEVEL0:Uno:tl} == "no"
|
||||||
|
LOCAL_DEPENDS_GUARD ?= _{.MAKE.LEVEL} > 0
|
||||||
|
.else
|
||||||
|
LOCAL_DEPENDS_GUARD ?= _{DEP_RELDIR} == _{_DEP_RELDIR}
|
||||||
|
.endif
|
||||||
|
|
||||||
# 'cat .depend' should suffice, but if we are mixing build modes
|
# 'cat .depend' should suffice, but if we are mixing build modes
|
||||||
# .depend may contain things we don't want.
|
# .depend may contain things we don't want.
|
||||||
# The sed command at the end of the stream, allows for the filters
|
# The sed command at the end of the stream, allows for the filters
|
||||||
@ -350,7 +356,7 @@ ${_DEPENDFILE}: .NOMETA ${CAT_DEPEND:M.depend} ${META_FILES:O:u:@m@${exists($m):
|
|||||||
${_include_src_dirdeps} \
|
${_include_src_dirdeps} \
|
||||||
echo '.include <dirdeps.mk>'; \
|
echo '.include <dirdeps.mk>'; \
|
||||||
echo; \
|
echo; \
|
||||||
echo '.if $${DEP_RELDIR} == $${_DEP_RELDIR}'; \
|
echo '.if ${LOCAL_DEPENDS_GUARD}'; \
|
||||||
echo '# local dependencies - needed for -jN in clean tree'; \
|
echo '# local dependencies - needed for -jN in clean tree'; \
|
||||||
[ -s ${CAT_DEPEND} ] && { grep : ${CAT_DEPEND} | grep -v '[/\\]'; }; \
|
[ -s ${CAT_DEPEND} ] && { grep : ${CAT_DEPEND} | grep -v '[/\\]'; }; \
|
||||||
echo '.endif' ) | sed 's,_\([{(]\),$$\1,g' > $@.new${.MAKE.PID}
|
echo '.endif' ) | sed 's,_\([{(]\),$$\1,g' > $@.new${.MAKE.PID}
|
||||||
|
@ -55,7 +55,7 @@
|
|||||||
# Simon J. Gerraty <sjg@crufty.net>
|
# Simon J. Gerraty <sjg@crufty.net>
|
||||||
|
|
||||||
# RCSid:
|
# RCSid:
|
||||||
# $Id: install-mk,v 1.172 2020/06/06 22:41:15 sjg Exp $
|
# $Id: install-mk,v 1.173 2020/06/23 04:16:35 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=20200606
|
MK_VERSION=20200622
|
||||||
OWNER=
|
OWNER=
|
||||||
GROUP=
|
GROUP=
|
||||||
MODE=444
|
MODE=444
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
:
|
#!/bin/sh
|
||||||
# $Id: mkopt.sh,v 1.11 2017/03/18 21:36:42 sjg Exp $
|
|
||||||
|
# $Id: mkopt.sh,v 1.12 2020/06/23 04:16:35 sjg Exp $
|
||||||
#
|
#
|
||||||
# @(#) Copyright (c) 2014, Simon J. Gerraty
|
# @(#) Copyright (c) 2014, 2020, Simon J. Gerraty
|
||||||
#
|
#
|
||||||
# This file is provided in the hope that it will
|
# This file is provided in the hope that it will
|
||||||
# be of use. There is absolutely NO WARRANTY.
|
# be of use. There is absolutely NO WARRANTY.
|
||||||
|
@ -1,80 +1,80 @@
|
|||||||
# $NetBSD: sys.mk,v 1.19.2.1 1994/07/26 19:58:31 cgd Exp $
|
# $NetBSD: sys.mk,v 1.19.2.1 1994/07/26 19:58:31 cgd Exp $
|
||||||
# @(#)sys.mk 5.11 (Berkeley) 3/13/91
|
# @(#)sys.mk 5.11 (Berkeley) 3/13/91
|
||||||
|
|
||||||
OS= AIX
|
OS ?= AIX
|
||||||
unix= We run ${OS}.
|
unix ?= We run ${OS}.
|
||||||
ROOT_GROUP= system
|
ROOT_GROUP ?= system
|
||||||
|
|
||||||
# This needs a lot of work yet...
|
# This needs a lot of work yet...
|
||||||
|
|
||||||
NOPIC=no # no shared libs?
|
NOPIC ?=no # no shared libs?
|
||||||
|
|
||||||
.SUFFIXES: .out .a .ln .o .c ${CXX_SUFFIXES} .F .f .r .y .l .s .S .cl .p .h .sh .m4
|
.SUFFIXES: .out .a .ln .o .c ${CXX_SUFFIXES} .F .f .r .y .l .s .S .cl .p .h .sh .m4
|
||||||
|
|
||||||
.LIBS: .a
|
.LIBS: .a
|
||||||
|
|
||||||
AR= ar
|
AR ?= ar
|
||||||
ARFLAGS= rl
|
ARFLAGS ?= rl
|
||||||
RANLIB= ranlib
|
RANLIB ?= ranlib
|
||||||
|
|
||||||
AS= as
|
AS ?= as
|
||||||
AFLAGS=
|
AFLAGS=
|
||||||
COMPILE.s= ${AS} ${AFLAGS}
|
COMPILE.s ?= ${AS} ${AFLAGS}
|
||||||
LINK.s= ${CC} ${AFLAGS} ${LDFLAGS}
|
LINK.s ?= ${CC} ${AFLAGS} ${LDFLAGS}
|
||||||
COMPILE.S= ${CC} ${AFLAGS} ${CPPFLAGS} -c
|
COMPILE.S ?= ${CC} ${AFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.S= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.S ?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
.if exists(/usr/local/bin/gcc)
|
.if exists(/usr/local/bin/gcc)
|
||||||
CC= gcc
|
CC ?= gcc
|
||||||
DBG= -O -g
|
DBG ?= -O -g
|
||||||
STATIC ?= -static
|
STATIC ?= -static
|
||||||
.else
|
.else
|
||||||
CC= cc
|
CC ?= cc
|
||||||
DBG= -g
|
DBG ?= -g
|
||||||
STATIC=
|
STATIC ?=
|
||||||
.endif
|
.endif
|
||||||
CFLAGS= ${DBG}
|
CFLAGS ?= ${DBG}
|
||||||
COMPILE.c= ${CC} ${CFLAGS} ${CPPFLAGS} -c
|
COMPILE.c ?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.c= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.c ?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
CXX= g++
|
CXX ?= g++
|
||||||
CXXFLAGS= ${CFLAGS}
|
CXXFLAGS ?= ${CFLAGS}
|
||||||
COMPILE.cc= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
|
COMPILE.cc ?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.cc= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.cc ?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
CPP= cpp
|
CPP ?= cpp
|
||||||
.if defined(DESTDIR)
|
.if defined(DESTDIR)
|
||||||
CPPFLAGS+= -nostdinc -idirafter ${DESTDIR}/usr/include
|
CPPFLAGS+= -nostdinc -idirafter ${DESTDIR}/usr/include
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
MK_DEP= mkdeps.sh -N
|
MK_DEP ?= mkdeps.sh -N
|
||||||
FC= f77
|
FC ?= f77
|
||||||
FFLAGS= -O
|
FFLAGS ?= -O
|
||||||
RFLAGS=
|
RFLAGS=
|
||||||
COMPILE.f= ${FC} ${FFLAGS} -c
|
COMPILE.f ?= ${FC} ${FFLAGS} -c
|
||||||
LINK.f= ${FC} ${FFLAGS} ${LDFLAGS}
|
LINK.f ?= ${FC} ${FFLAGS} ${LDFLAGS}
|
||||||
COMPILE.F= ${FC} ${FFLAGS} ${CPPFLAGS} -c
|
COMPILE.F ?= ${FC} ${FFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.F= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.F ?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
COMPILE.r= ${FC} ${FFLAGS} ${RFLAGS} -c
|
COMPILE.r ?= ${FC} ${FFLAGS} ${RFLAGS} -c
|
||||||
LINK.r= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
|
LINK.r ?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
LEX= lex
|
LEX ?= lex
|
||||||
LFLAGS=
|
LFLAGS=
|
||||||
LEX.l= ${LEX} ${LFLAGS}
|
LEX.l ?= ${LEX} ${LFLAGS}
|
||||||
|
|
||||||
LD= ld
|
LD ?= ld
|
||||||
LDFLAGS=
|
LDFLAGS=
|
||||||
|
|
||||||
LINT= lint
|
LINT ?= lint
|
||||||
LINTFLAGS= -chapbx
|
LINTFLAGS ?= -chapbx
|
||||||
|
|
||||||
PC= pc
|
PC ?= pc
|
||||||
PFLAGS=
|
PFLAGS=
|
||||||
COMPILE.p= ${PC} ${PFLAGS} ${CPPFLAGS} -c
|
COMPILE.p ?= ${PC} ${PFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.p= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.p ?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
YACC= yacc
|
YACC ?= yacc
|
||||||
YFLAGS= -d
|
YFLAGS ?= -d
|
||||||
YACC.y= ${YACC} ${YFLAGS}
|
YACC.y ?= ${YACC} ${YFLAGS}
|
||||||
|
|
||||||
# C
|
# C
|
||||||
.c:
|
.c:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# $NetBSD: Darwin.sys.mk,v 1.3 2003/02/16 09:44:41 grant Exp $
|
# $NetBSD: Darwin.sys.mk,v 1.3 2003/02/16 09:44:41 grant Exp $
|
||||||
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
|
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
|
||||||
|
|
||||||
OS= Darwin
|
OS ?= Darwin
|
||||||
unix ?= We run ${OS}.
|
unix ?= We run ${OS}.
|
||||||
|
|
||||||
.SUFFIXES: .out .a .ln .o .s .S .c .m ${CXX_SUFFIXES} .F .f .r .y .l .cl .p .h
|
.SUFFIXES: .out .a .ln .o .s .S .c .m ${CXX_SUFFIXES} .F .f .r .y .l .cl .p .h
|
||||||
@ -9,9 +9,9 @@ unix?= We run ${OS}.
|
|||||||
|
|
||||||
.LIBS: .a .dylib
|
.LIBS: .a .dylib
|
||||||
|
|
||||||
SHLIBEXT = .dylib
|
SHLIBEXT ?= .dylib
|
||||||
HOST_LIBEXT = .dylib
|
HOST_LIBEXT ?= .dylib
|
||||||
DSHLIBEXT = .dylib
|
DSHLIBEXT ?= .dylib
|
||||||
|
|
||||||
AR ?= ar
|
AR ?= ar
|
||||||
ARFLAGS ?= rl
|
ARFLAGS ?= rl
|
||||||
@ -54,7 +54,7 @@ COMPILE.m?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} -c
|
|||||||
LINK.m ?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.m ?= ${OBJC} ${OBJCFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
CPP ?= cpp
|
CPP ?= cpp
|
||||||
NOLINT= 1
|
NOLINT ?= 1
|
||||||
CPPFLAGS ?=
|
CPPFLAGS ?=
|
||||||
|
|
||||||
MK_DEP ?= mkdep
|
MK_DEP ?= mkdep
|
||||||
@ -78,11 +78,11 @@ LEX.l?= ${LEX} ${LFLAGS}
|
|||||||
LD ?= ld
|
LD ?= ld
|
||||||
LDFLAGS ?=
|
LDFLAGS ?=
|
||||||
|
|
||||||
SHLIB_TEENY = 0
|
SHLIB_TEENY ?= 0
|
||||||
SHLIB_MINOR = 0
|
SHLIB_MINOR ?= 0
|
||||||
|
|
||||||
MKPICLIB = no
|
MKPICLIB ?= no
|
||||||
LIBEXT = .dylib
|
LIBEXT ?= .dylib
|
||||||
|
|
||||||
LINT ?= lint
|
LINT ?= lint
|
||||||
LINTFLAGS ?= -chapbx
|
LINTFLAGS ?= -chapbx
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# $Id: Generic.mk,v 1.14 2020/04/17 21:08:17 sjg Exp $
|
# $Id: Generic.mk,v 1.16 2020/06/29 14:34:42 sjg Exp $
|
||||||
#
|
#
|
||||||
|
|
||||||
# some reasonable defaults
|
# some reasonable defaults
|
||||||
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
.LIBS: .a
|
.LIBS: .a
|
||||||
|
|
||||||
tools = \
|
tools ?= \
|
||||||
ar \
|
ar \
|
||||||
lorder \
|
lorder \
|
||||||
ranlib \
|
ranlib \
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# $Id: HP-UX.mk,v 1.12 2020/04/17 21:08:17 sjg Exp $
|
# $Id: HP-UX.mk,v 1.14 2020/06/29 14:34:42 sjg Exp $
|
||||||
# $NetBSD: sys.mk,v 1.19.2.1 1994/07/26 19:58:31 cgd Exp $
|
# $NetBSD: sys.mk,v 1.19.2.1 1994/07/26 19:58:31 cgd Exp $
|
||||||
# @(#)sys.mk 5.11 (Berkeley) 3/13/91
|
# @(#)sys.mk 5.11 (Berkeley) 3/13/91
|
||||||
|
|
||||||
OS= HP-UX
|
OS ?= HP-UX
|
||||||
ROOT_GROUP= root
|
ROOT_GROUP ?= root
|
||||||
unix ?= We run ${OS}.
|
unix ?= We run ${OS}.
|
||||||
|
|
||||||
# HP-UX's cc does not provide any clues as to wether this is 9.x or 10.x
|
# HP-UX's cc does not provide any clues as to wether this is 9.x or 10.x
|
||||||
@ -16,8 +16,8 @@ __HPUX_VERSION?=${OSMAJOR}
|
|||||||
|
|
||||||
.SUFFIXES: .out .a .ln .o .c ${CXX_SUFFIXES} .F .f .r .y .l .s .S .cl .p .h .sh .m4
|
.SUFFIXES: .out .a .ln .o .c ${CXX_SUFFIXES} .F .f .r .y .l .s .S .cl .p .h .sh .m4
|
||||||
|
|
||||||
LIBMODE= 755
|
LIBMODE ?= 755
|
||||||
LIBCRT0= /lib/crt0.o
|
LIBCRT0 ?= /lib/crt0.o
|
||||||
|
|
||||||
.LIBS: .a
|
.LIBS: .a
|
||||||
|
|
||||||
@ -32,19 +32,19 @@ LDADD+= ${LD_bpath} ${LD_spath}
|
|||||||
LDADD+= /usr/lib/end.o
|
LDADD+= /usr/lib/end.o
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
AR= ar
|
AR ?= ar
|
||||||
ARFLAGS= rl
|
ARFLAGS ?= rl
|
||||||
RANLIB= :
|
RANLIB ?= :
|
||||||
|
|
||||||
AFLAGS=
|
AFLAGS=
|
||||||
COMPILE.s= ${AS} ${AFLAGS}
|
COMPILE.s ?= ${AS} ${AFLAGS}
|
||||||
LINK.s= ${CC} ${AFLAGS} ${LDFLAGS}
|
LINK.s ?= ${CC} ${AFLAGS} ${LDFLAGS}
|
||||||
COMPILE.S= ${CC} ${AFLAGS} ${CPPFLAGS} -c
|
COMPILE.S ?= ${CC} ${AFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.S= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.S ?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
.if exists(/usr/local/bin/gcc)
|
.if exists(/usr/local/bin/gcc)
|
||||||
PIPE ?= -pipe
|
PIPE ?= -pipe
|
||||||
CC ?= gcc ${PIPE}
|
CC ?= gcc ${PIPE}
|
||||||
AS= gas
|
AS ?= gas
|
||||||
DBG ?= -O -g
|
DBG ?= -O -g
|
||||||
STATIC ?= -static
|
STATIC ?= -static
|
||||||
.if defined(DESTDIR)
|
.if defined(DESTDIR)
|
||||||
@ -52,8 +52,8 @@ CPPFLAGS+= -nostdinc -idirafter ${DESTDIR}/usr/include
|
|||||||
.endif
|
.endif
|
||||||
.else
|
.else
|
||||||
# HP's bundled compiler knows not -g or -O
|
# HP's bundled compiler knows not -g or -O
|
||||||
AS= as
|
AS ?= as
|
||||||
CC= cc
|
CC ?= cc
|
||||||
.if exists(/opt/ansic/bin/cc)
|
.if exists(/opt/ansic/bin/cc)
|
||||||
CCMODE ?=-Ae +ESlit
|
CCMODE ?=-Ae +ESlit
|
||||||
PICFLAG ?= +z
|
PICFLAG ?= +z
|
||||||
@ -68,55 +68,55 @@ CCSOURCE_FLAGS?= -D_HPUX_SOURCE
|
|||||||
.else
|
.else
|
||||||
CCSOURCE_FLAGS ?= -D_HPUX_SOURCE -D_INCLUDE_POSIX_SOURCE -D_INCLUDE_XOPEN_SOURCE -D_INCLUDE_XOPEN_SOURCE_EXTENDED
|
CCSOURCE_FLAGS ?= -D_HPUX_SOURCE -D_INCLUDE_POSIX_SOURCE -D_INCLUDE_XOPEN_SOURCE -D_INCLUDE_XOPEN_SOURCE_EXTENDED
|
||||||
.endif
|
.endif
|
||||||
CFLAGS= ${DBG}
|
CFLAGS ?= ${DBG}
|
||||||
CFLAGS+= ${CCMODE} -D__hpux__ -D__HPUX_VERSION=${__HPUX_VERSION} ${CCSOURCE_FLAGS}
|
CFLAGS+ ?= ${CCMODE} -D__hpux__ -D__HPUX_VERSION=${__HPUX_VERSION} ${CCSOURCE_FLAGS}
|
||||||
COMPILE.c= ${CC} ${CFLAGS} ${CPPFLAGS} -c
|
COMPILE.c ?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.c= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.c ?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
CXX= g++
|
CXX ?= g++
|
||||||
CXXFLAGS= ${CFLAGS}
|
CXXFLAGS ?= ${CFLAGS}
|
||||||
COMPILE.cc= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
|
COMPILE.cc ?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.cc= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.cc ?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
CPP= cpp
|
CPP ?= cpp
|
||||||
|
|
||||||
MK_DEP= mkdeps.sh -N
|
MK_DEP ?= mkdeps.sh -N
|
||||||
FC= f77
|
FC ?= f77
|
||||||
FFLAGS= -O
|
FFLAGS ?= -O
|
||||||
RFLAGS=
|
RFLAGS=
|
||||||
COMPILE.f= ${FC} ${FFLAGS} -c
|
COMPILE.f ?= ${FC} ${FFLAGS} -c
|
||||||
LINK.f= ${FC} ${FFLAGS} ${LDFLAGS}
|
LINK.f ?= ${FC} ${FFLAGS} ${LDFLAGS}
|
||||||
COMPILE.F= ${FC} ${FFLAGS} ${CPPFLAGS} -c
|
COMPILE.F ?= ${FC} ${FFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.F= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.F ?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
COMPILE.r= ${FC} ${FFLAGS} ${RFLAGS} -c
|
COMPILE.r ?= ${FC} ${FFLAGS} ${RFLAGS} -c
|
||||||
LINK.r= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
|
LINK.r ?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
LEX= lex
|
LEX ?= lex
|
||||||
LFLAGS=
|
LFLAGS=
|
||||||
LEX.l= ${LEX} ${LFLAGS}
|
LEX.l ?= ${LEX} ${LFLAGS}
|
||||||
|
|
||||||
LD= ld
|
LD ?= ld
|
||||||
LDFLAGS=
|
LDFLAGS=
|
||||||
|
|
||||||
LINT= lint
|
LINT ?= lint
|
||||||
LINTFLAGS= -chapbx
|
LINTFLAGS ?= -chapbx
|
||||||
|
|
||||||
PC= pc
|
PC ?= pc
|
||||||
PFLAGS=
|
PFLAGS=
|
||||||
COMPILE.p= ${PC} ${PFLAGS} ${CPPFLAGS} -c
|
COMPILE.p ?= ${PC} ${PFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.p= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.p ?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
# HP's sh sucks
|
# HP's sh sucks
|
||||||
ENV=
|
ENV=
|
||||||
MAKE_SHELL= /bin/ksh
|
MAKE_SHELL ?= /bin/ksh
|
||||||
|
|
||||||
.if exists(/usr/local/bin/bison)
|
.if exists(/usr/local/bin/bison)
|
||||||
YACC= bison -y
|
YACC ?= bison -y
|
||||||
.else
|
.else
|
||||||
YACC= yacc
|
YACC ?= yacc
|
||||||
.endif
|
.endif
|
||||||
YFLAGS= -d
|
YFLAGS ?= -d
|
||||||
YACC.y= ${YACC} ${YFLAGS}
|
YACC.y ?= ${YACC} ${YFLAGS}
|
||||||
|
|
||||||
# C
|
# C
|
||||||
.c:
|
.c:
|
||||||
|
@ -1,83 +1,83 @@
|
|||||||
# $Id: Linux.mk,v 1.10 2020/04/17 21:08:17 sjg Exp $
|
# $Id: Linux.mk,v 1.12 2020/06/29 14:34:42 sjg Exp $
|
||||||
# $NetBSD: sys.mk,v 1.19.2.1 1994/07/26 19:58:31 cgd Exp $
|
# $NetBSD: sys.mk,v 1.19.2.1 1994/07/26 19:58:31 cgd Exp $
|
||||||
# @(#)sys.mk 5.11 (Berkeley) 3/13/91
|
# @(#)sys.mk 5.11 (Berkeley) 3/13/91
|
||||||
|
|
||||||
OS ?= Linux
|
OS ?= Linux
|
||||||
unix ?= We run ${OS}.
|
unix ?= We run ${OS}.
|
||||||
|
|
||||||
ROOT_GROUP= root
|
ROOT_GROUP ?= root
|
||||||
|
|
||||||
# would be better to work out where it is...
|
# would be better to work out where it is...
|
||||||
LIBCRT0= /dev/null
|
LIBCRT0 ?= /dev/null
|
||||||
|
|
||||||
NEED_SOLINKS=yes
|
NEED_SOLINKS ?=yes
|
||||||
|
|
||||||
.SUFFIXES: .out .a .ln .o .c ${CXX_SUFFIXES} .F .f .r .y .l .s .S .cl .p .h .sh .m4
|
.SUFFIXES: .out .a .ln .o .c ${CXX_SUFFIXES} .F .f .r .y .l .s .S .cl .p .h .sh .m4
|
||||||
|
|
||||||
.LIBS: .a
|
.LIBS: .a
|
||||||
|
|
||||||
AR= ar
|
AR ?= ar
|
||||||
ARFLAGS= rl
|
ARFLAGS ?= rl
|
||||||
RANLIB= ranlib
|
RANLIB ?= ranlib
|
||||||
|
|
||||||
AS= as
|
AS ?= as
|
||||||
AFLAGS=
|
AFLAGS=
|
||||||
COMPILE.s= ${AS} ${AFLAGS}
|
COMPILE.s ?= ${AS} ${AFLAGS}
|
||||||
LINK.s= ${CC} ${AFLAGS} ${LDFLAGS}
|
LINK.s ?= ${CC} ${AFLAGS} ${LDFLAGS}
|
||||||
COMPILE.S= ${CC} ${AFLAGS} ${CPPFLAGS} -c
|
COMPILE.S ?= ${CC} ${AFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.S= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.S ?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
.if exists(/usr/local/bin/gcc)
|
.if exists(/usr/local/bin/gcc)
|
||||||
CC= gcc -pipe
|
CC ?= gcc -pipe
|
||||||
DBG= -O -g
|
DBG ?= -O -g
|
||||||
STATIC ?= -static
|
STATIC ?= -static
|
||||||
.else
|
.else
|
||||||
CC= cc -pipe
|
CC ?= cc -pipe
|
||||||
DBG= -g
|
DBG ?= -g
|
||||||
STATIC= -Bstatic
|
STATIC ?= -Bstatic
|
||||||
.endif
|
.endif
|
||||||
CFLAGS= ${DBG}
|
CFLAGS ?= ${DBG}
|
||||||
COMPILE.c= ${CC} ${CFLAGS} ${CPPFLAGS} -c
|
COMPILE.c ?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.c= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.c ?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
CXX= g++
|
CXX ?= g++
|
||||||
CXXFLAGS= ${CFLAGS}
|
CXXFLAGS ?= ${CFLAGS}
|
||||||
COMPILE.cc= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
|
COMPILE.cc ?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.cc= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.cc ?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
CPP= cpp
|
CPP ?= cpp
|
||||||
.if defined(DESTDIR)
|
.if defined(DESTDIR)
|
||||||
CPPFLAGS+= -nostdinc -idirafter ${DESTDIR}/usr/include
|
CPPFLAGS+= -nostdinc -idirafter ${DESTDIR}/usr/include
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
MK_DEP= mkdeps.sh -N
|
MK_DEP ?= mkdeps.sh -N
|
||||||
FC= f77
|
FC ?= f77
|
||||||
FFLAGS= -O
|
FFLAGS ?= -O
|
||||||
RFLAGS=
|
RFLAGS=
|
||||||
COMPILE.f= ${FC} ${FFLAGS} -c
|
COMPILE.f ?= ${FC} ${FFLAGS} -c
|
||||||
LINK.f= ${FC} ${FFLAGS} ${LDFLAGS}
|
LINK.f ?= ${FC} ${FFLAGS} ${LDFLAGS}
|
||||||
COMPILE.F= ${FC} ${FFLAGS} ${CPPFLAGS} -c
|
COMPILE.F ?= ${FC} ${FFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.F= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.F ?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
COMPILE.r= ${FC} ${FFLAGS} ${RFLAGS} -c
|
COMPILE.r ?= ${FC} ${FFLAGS} ${RFLAGS} -c
|
||||||
LINK.r= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
|
LINK.r ?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
LEX= lex
|
LEX ?= lex
|
||||||
LFLAGS=
|
LFLAGS=
|
||||||
LEX.l= ${LEX} ${LFLAGS}
|
LEX.l ?= ${LEX} ${LFLAGS}
|
||||||
|
|
||||||
LD= ld
|
LD ?= ld
|
||||||
LDFLAGS=
|
LDFLAGS=
|
||||||
|
|
||||||
LINT= lint
|
LINT ?= lint
|
||||||
LINTFLAGS= -chapbx
|
LINTFLAGS ?= -chapbx
|
||||||
|
|
||||||
PC= pc
|
PC ?= pc
|
||||||
PFLAGS=
|
PFLAGS=
|
||||||
COMPILE.p= ${PC} ${PFLAGS} ${CPPFLAGS} -c
|
COMPILE.p ?= ${PC} ${PFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.p= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.p ?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
YACC= yacc
|
YACC ?= yacc
|
||||||
YFLAGS= -d
|
YFLAGS ?= -d
|
||||||
YACC.y= ${YACC} ${YFLAGS}
|
YACC.y ?= ${YACC} ${YFLAGS}
|
||||||
|
|
||||||
# C
|
# C
|
||||||
.c:
|
.c:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# $NetBSD: sys.mk,v 1.66.2.1 2002/06/05 03:31:01 lukem Exp $
|
# $NetBSD: sys.mk,v 1.66.2.1 2002/06/05 03:31:01 lukem Exp $
|
||||||
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
|
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
|
||||||
|
|
||||||
OS= NetBSD
|
OS ?= NetBSD
|
||||||
unix ?= We run ${OS}.
|
unix ?= We run ${OS}.
|
||||||
|
|
||||||
.if !defined(MAKE_VERSION)
|
.if !defined(MAKE_VERSION)
|
||||||
@ -9,13 +9,13 @@ unix?= We run ${OS}.
|
|||||||
# which defined MAKE_VERSION between 20010609 and 20090324
|
# which defined MAKE_VERSION between 20010609 and 20090324
|
||||||
# so we can make a rough guess
|
# so we can make a rough guess
|
||||||
.if defined(.MAKE.LEVEL)
|
.if defined(.MAKE.LEVEL)
|
||||||
MAKE_VERSION = 20090908
|
MAKE_VERSION ?= 20090908
|
||||||
.elif defined(.MAKE.MAKEFILES)
|
.elif defined(.MAKE.MAKEFILES)
|
||||||
# introduced 20071008
|
# introduced 20071008
|
||||||
MAKE_VERSION = 20090324
|
MAKE_VERSION ?= 20090324
|
||||||
.else
|
.else
|
||||||
# this just before when MAKE_VERSION was introduced
|
# this just before when MAKE_VERSION was introduced
|
||||||
MAKE_VERSION = 20010606
|
MAKE_VERSION ?= 20010606
|
||||||
.endif
|
.endif
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
@ -40,13 +40,13 @@ CC?= cc
|
|||||||
# need to make sure this is set
|
# need to make sure this is set
|
||||||
MACHINE_ARCH.${MACHINE} ?= ${MACHINE}
|
MACHINE_ARCH.${MACHINE} ?= ${MACHINE}
|
||||||
.if empty(MACHINE_ARCH)
|
.if empty(MACHINE_ARCH)
|
||||||
MACHINE_ARCH = ${MACHINE_ARCH.${MACHINE}}
|
MACHINE_ARCH ?= ${MACHINE_ARCH.${MACHINE}}
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
#
|
#
|
||||||
# CPU model, derived from MACHINE_ARCH
|
# CPU model, derived from MACHINE_ARCH
|
||||||
#
|
#
|
||||||
MACHINE_CPU= ${MACHINE_ARCH:C/mipse[bl]/mips/:C/mips64e[bl]/mips/:C/sh3e[bl]/sh3/:S/m68000/m68k/:S/armeb/arm/}
|
MACHINE_CPU ?= ${MACHINE_ARCH:C/mipse[bl]/mips/:C/mips64e[bl]/mips/:C/sh3e[bl]/sh3/:S/m68000/m68k/:S/armeb/arm/}
|
||||||
|
|
||||||
.if ${MACHINE_CPU} == "alpha" || \
|
.if ${MACHINE_CPU} == "alpha" || \
|
||||||
${MACHINE_CPU} == "arm" || \
|
${MACHINE_CPU} == "arm" || \
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
# $Id: OSF1.mk,v 1.9 2020/04/17 21:08:17 sjg Exp $
|
# $Id: OSF1.mk,v 1.11 2020/06/29 14:34:42 sjg Exp $
|
||||||
# $NetBSD: sys.mk,v 1.19.2.1 1994/07/26 19:58:31 cgd Exp $
|
# $NetBSD: sys.mk,v 1.19.2.1 1994/07/26 19:58:31 cgd Exp $
|
||||||
# @(#)sys.mk 5.11 (Berkeley) 3/13/91
|
# @(#)sys.mk 5.11 (Berkeley) 3/13/91
|
||||||
|
|
||||||
OS ?= OSF1
|
OS ?= OSF1
|
||||||
unix ?= We run ${OS}.
|
unix ?= We run ${OS}.
|
||||||
ROOT_GROUP= system
|
ROOT_GROUP ?= system
|
||||||
|
|
||||||
# can't fine one anywhere, so just stop the dependency
|
# can't fine one anywhere, so just stop the dependency
|
||||||
LIBCRT0= /dev/null
|
LIBCRT0 ?= /dev/null
|
||||||
|
|
||||||
PATH=/usr/sbin:/usr/bin:/usr/ucb:/opt/gnu/bin:/usr/ccs/bin
|
PATH ?=/usr/sbin:/usr/bin:/usr/ucb:/opt/gnu/bin:/usr/ccs/bin
|
||||||
|
|
||||||
.SUFFIXES: .out .a .ln .o .c ${CXX_SUFFIXES} .F .f .r .y .l .s .S .cl .p .h .sh .m4
|
.SUFFIXES: .out .a .ln .o .c ${CXX_SUFFIXES} .F .f .r .y .l .s .S .cl .p .h .sh .m4
|
||||||
|
|
||||||
@ -17,78 +17,78 @@ PATH=/usr/sbin:/usr/bin:/usr/ucb:/opt/gnu/bin:/usr/ccs/bin
|
|||||||
|
|
||||||
# no -X
|
# no -X
|
||||||
LD_X=
|
LD_X=
|
||||||
LD_x= -x
|
LD_x ?= -x
|
||||||
LD_r= -r
|
LD_r ?= -r
|
||||||
AR= ar
|
AR ?= ar
|
||||||
ARFLAGS= rl
|
ARFLAGS ?= rl
|
||||||
RANLIB= ranlib
|
RANLIB ?= ranlib
|
||||||
|
|
||||||
AS= as
|
AS ?= as
|
||||||
AS_STDIN= -
|
AS_STDIN ?= -
|
||||||
AFLAGS=
|
AFLAGS=
|
||||||
COMPILE.s= ${AS} ${AFLAGS}
|
COMPILE.s ?= ${AS} ${AFLAGS}
|
||||||
LINK.s= ${CC} ${AFLAGS} ${LDFLAGS}
|
LINK.s ?= ${CC} ${AFLAGS} ${LDFLAGS}
|
||||||
COMPILE.S= ${CC} ${AFLAGS} ${CPPFLAGS} -c
|
COMPILE.S ?= ${CC} ${AFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.S= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.S ?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
.if exists(/opt/gnu/bin/gcc) || exists(/usr/local/bin/gcc)
|
.if exists(/opt/gnu/bin/gcc) || exists(/usr/local/bin/gcc)
|
||||||
CC ?= gcc
|
CC ?= gcc
|
||||||
.else
|
.else
|
||||||
CC ?= cc -std
|
CC ?= cc -std
|
||||||
.endif
|
.endif
|
||||||
.if (${CC:T} == "gcc")
|
.if (${CC:T} == "gcc")
|
||||||
DBG= -O -g
|
DBG ?= -O -g
|
||||||
STATIC= -static
|
STATIC ?= -static
|
||||||
DBG= -g
|
DBG ?= -g
|
||||||
STATIC= -non_shared
|
STATIC ?= -non_shared
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
CFLAGS= ${DBG}
|
CFLAGS ?= ${DBG}
|
||||||
COMPILE.c= ${CC} ${CFLAGS} ${CPPFLAGS} -c
|
COMPILE.c ?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.c= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.c ?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
CXX= g++
|
CXX ?= g++
|
||||||
CXXFLAGS= ${CFLAGS}
|
CXXFLAGS ?= ${CFLAGS}
|
||||||
COMPILE.cc= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
|
COMPILE.cc ?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.cc= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.cc ?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
CPP= /usr/ccs/lib/cpp
|
CPP ?= /usr/ccs/lib/cpp
|
||||||
.if defined(DESTDIR)
|
.if defined(DESTDIR)
|
||||||
CPPFLAGS+= -nostdinc -idirafter ${DESTDIR}/usr/include
|
CPPFLAGS+= -nostdinc -idirafter ${DESTDIR}/usr/include
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
MK_DEP= mkdeps.sh -N
|
MK_DEP ?= mkdeps.sh -N
|
||||||
FC= f77
|
FC ?= f77
|
||||||
FFLAGS= -O
|
FFLAGS ?= -O
|
||||||
RFLAGS=
|
RFLAGS=
|
||||||
COMPILE.f= ${FC} ${FFLAGS} -c
|
COMPILE.f ?= ${FC} ${FFLAGS} -c
|
||||||
LINK.f= ${FC} ${FFLAGS} ${LDFLAGS}
|
LINK.f ?= ${FC} ${FFLAGS} ${LDFLAGS}
|
||||||
COMPILE.F= ${FC} ${FFLAGS} ${CPPFLAGS} -c
|
COMPILE.F ?= ${FC} ${FFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.F= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.F ?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
COMPILE.r= ${FC} ${FFLAGS} ${RFLAGS} -c
|
COMPILE.r ?= ${FC} ${FFLAGS} ${RFLAGS} -c
|
||||||
LINK.r= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
|
LINK.r ?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
LEX= lex
|
LEX ?= lex
|
||||||
LFLAGS=
|
LFLAGS=
|
||||||
LEX.l= ${LEX} ${LFLAGS}
|
LEX.l ?= ${LEX} ${LFLAGS}
|
||||||
|
|
||||||
LD= ld
|
LD ?= ld
|
||||||
LDFLAGS=
|
LDFLAGS=
|
||||||
|
|
||||||
LINT= lint
|
LINT ?= lint
|
||||||
LINTFLAGS= -chapbx
|
LINTFLAGS ?= -chapbx
|
||||||
|
|
||||||
PC= pc
|
PC ?= pc
|
||||||
PFLAGS=
|
PFLAGS=
|
||||||
COMPILE.p= ${PC} ${PFLAGS} ${CPPFLAGS} -c
|
COMPILE.p ?= ${PC} ${PFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.p= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.p ?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
.if exists(/usr/local/bin/bison) || exists(/opt/gnu/bin/bison)
|
.if exists(/usr/local/bin/bison) || exists(/opt/gnu/bin/bison)
|
||||||
YACC= bison -y
|
YACC ?= bison -y
|
||||||
.else
|
.else
|
||||||
YACC= yacc
|
YACC ?= yacc
|
||||||
.endif
|
.endif
|
||||||
YFLAGS= -d
|
YFLAGS ?= -d
|
||||||
YACC.y= ${YACC} ${YFLAGS}
|
YACC.y ?= ${YACC} ${YFLAGS}
|
||||||
|
|
||||||
# C
|
# C
|
||||||
.c:
|
.c:
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# $NetBSD: OpenBSD.sys.mk,v 1.1 2002/11/17 09:18:00 cjep Exp $
|
# $NetBSD: OpenBSD.sys.mk,v 1.1 2002/11/17 09:18:00 cjep Exp $
|
||||||
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
|
# @(#)sys.mk 8.2 (Berkeley) 3/21/94
|
||||||
|
|
||||||
OS= OpenBSD
|
OS ?= OpenBSD
|
||||||
unix ?= We run ${OS}.
|
unix ?= We run ${OS}.
|
||||||
|
|
||||||
.SUFFIXES: .out .a .ln .o .s .S .c ${CXX_SUFFIXES} .F .f .r .y .l .cl .p .h
|
.SUFFIXES: .out .a .ln .o .s .S .c ${CXX_SUFFIXES} .F .f .r .y .l .cl .p .h
|
||||||
@ -12,7 +12,7 @@ unix?= We run ${OS}.
|
|||||||
# need to make sure this is set
|
# need to make sure this is set
|
||||||
MACHINE_ARCH.${MACHINE} ?= ${MACHINE}
|
MACHINE_ARCH.${MACHINE} ?= ${MACHINE}
|
||||||
.if empty(MACHINE_ARCH)
|
.if empty(MACHINE_ARCH)
|
||||||
MACHINE_ARCH = ${MACHINE_ARCH.${MACHINE}}
|
MACHINE_ARCH ?= ${MACHINE_ARCH.${MACHINE}}
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
AR ?= ar
|
AR ?= ar
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# $Id: SunOS.mk,v 1.9 2020/04/17 21:08:17 sjg Exp $
|
# $Id: SunOS.mk,v 1.11 2020/06/29 14:34:42 sjg Exp $
|
||||||
|
|
||||||
.if ${.PARSEFILE} == "sys.mk"
|
.if ${.PARSEFILE} == "sys.mk"
|
||||||
.include <host-target.mk>
|
.include <host-target.mk>
|
||||||
@ -8,12 +8,12 @@ unix?= We run ${OS}.
|
|||||||
.endif
|
.endif
|
||||||
|
|
||||||
.if ${HOST_OSMAJOR} > 4
|
.if ${HOST_OSMAJOR} > 4
|
||||||
ROOT_GROUP= root
|
ROOT_GROUP ?= root
|
||||||
|
|
||||||
SHLIB_FULLVERSION = ${SHLIB_MAJOR}
|
SHLIB_FULLVERSION ?= ${SHLIB_MAJOR}
|
||||||
|
|
||||||
# suppress the dependency
|
# suppress the dependency
|
||||||
LIBCRT0= /dev/null
|
LIBCRT0 ?= /dev/null
|
||||||
|
|
||||||
.ifndef CC
|
.ifndef CC
|
||||||
# the PATH below may find an ancient gcc
|
# the PATH below may find an ancient gcc
|
||||||
@ -22,21 +22,21 @@ CC := ${gcc:L:${M_whence}}
|
|||||||
.endif
|
.endif
|
||||||
|
|
||||||
# the stuff in /usr/xpg4/bin is usually more sane.
|
# the stuff in /usr/xpg4/bin is usually more sane.
|
||||||
PATH=/usr/xpg4/bin:/usr/sbin:/usr/bin:/usr/ucb:/usr/sfw/bin:/opt/gnu/bin:/usr/ccs/bin:/usr/local/bin
|
PATH ?=/usr/xpg4/bin:/usr/sbin:/usr/bin:/usr/ucb:/usr/sfw/bin:/opt/gnu/bin:/usr/ccs/bin:/usr/local/bin
|
||||||
.export PATH
|
.export PATH
|
||||||
|
|
||||||
DSHLIBEXT = .so
|
DSHLIBEXT ?= .so
|
||||||
HOST_LIBDIRS = /usr/lib /lib /usr/sfw/lib
|
HOST_LIBDIRS ?= /usr/lib /lib /usr/sfw/lib
|
||||||
|
|
||||||
# no -X
|
# no -X
|
||||||
LD_X=
|
LD_X=
|
||||||
LD_x=
|
LD_x=
|
||||||
RANLIB= :
|
RANLIB ?= :
|
||||||
CPP= /usr/ccs/lib/cpp
|
CPP ?= /usr/ccs/lib/cpp
|
||||||
.else
|
.else
|
||||||
ROOT_GROUP= wheel
|
ROOT_GROUP ?= wheel
|
||||||
RANLIB= ranlib
|
RANLIB ?= ranlib
|
||||||
CPP= cpp
|
CPP ?= cpp
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
# the rest is common
|
# the rest is common
|
||||||
@ -45,71 +45,71 @@ CPP= cpp
|
|||||||
|
|
||||||
.LIBS: .a
|
.LIBS: .a
|
||||||
|
|
||||||
AR= ar
|
AR ?= ar
|
||||||
ARFLAGS= rl
|
ARFLAGS ?= rl
|
||||||
|
|
||||||
AS= as
|
AS ?= as
|
||||||
AS_STDIN= -
|
AS_STDIN ?= -
|
||||||
AFLAGS=
|
AFLAGS=
|
||||||
COMPILE.s= ${AS} ${AFLAGS}
|
COMPILE.s ?= ${AS} ${AFLAGS}
|
||||||
LINK.s= ${CC} ${AFLAGS} ${LDFLAGS}
|
LINK.s ?= ${CC} ${AFLAGS} ${LDFLAGS}
|
||||||
COMPILE.S= ${CC} ${AFLAGS} ${CPPFLAGS} -c
|
COMPILE.S ?= ${CC} ${AFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.S= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.S ?= ${CC} ${AFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
.if exists(/opt/gnu/bin/gcc) || exists(/usr/local/bin/gcc)
|
.if exists(/opt/gnu/bin/gcc) || exists(/usr/local/bin/gcc)
|
||||||
CC ?= gcc -pipe
|
CC ?= gcc -pipe
|
||||||
DBG= -O -g
|
DBG ?= -O -g
|
||||||
STATIC= -static
|
STATIC ?= -static
|
||||||
.else
|
.else
|
||||||
CC ?= cc
|
CC ?= cc
|
||||||
DBG= -g
|
DBG ?= -g
|
||||||
STATIC= -Bstatic
|
STATIC ?= -Bstatic
|
||||||
.endif
|
.endif
|
||||||
CFLAGS= ${DBG}
|
CFLAGS ?= ${DBG}
|
||||||
COMPILE.c= ${CC} ${CFLAGS} ${CPPFLAGS} -c
|
COMPILE.c ?= ${CC} ${CFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.c= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.c ?= ${CC} ${CFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
CXX= g++
|
CXX ?= g++
|
||||||
CXXFLAGS= ${CFLAGS}
|
CXXFLAGS ?= ${CFLAGS}
|
||||||
COMPILE.cc= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
|
COMPILE.cc ?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.cc= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.cc ?= ${CXX} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
.if defined(DESTDIR)
|
.if defined(DESTDIR)
|
||||||
CPPFLAGS+= -nostdinc -idirafter ${DESTDIR}/usr/include
|
CPPFLAGS+= -nostdinc -idirafter ${DESTDIR}/usr/include
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
MK_DEP= mkdeps.sh -N
|
MK_DEP ?= mkdeps.sh -N
|
||||||
FC= f77
|
FC ?= f77
|
||||||
FFLAGS= -O
|
FFLAGS ?= -O
|
||||||
RFLAGS=
|
RFLAGS=
|
||||||
COMPILE.f= ${FC} ${FFLAGS} -c
|
COMPILE.f ?= ${FC} ${FFLAGS} -c
|
||||||
LINK.f= ${FC} ${FFLAGS} ${LDFLAGS}
|
LINK.f ?= ${FC} ${FFLAGS} ${LDFLAGS}
|
||||||
COMPILE.F= ${FC} ${FFLAGS} ${CPPFLAGS} -c
|
COMPILE.F ?= ${FC} ${FFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.F= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.F ?= ${FC} ${FFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
COMPILE.r= ${FC} ${FFLAGS} ${RFLAGS} -c
|
COMPILE.r ?= ${FC} ${FFLAGS} ${RFLAGS} -c
|
||||||
LINK.r= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
|
LINK.r ?= ${FC} ${FFLAGS} ${RFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
LEX= lex
|
LEX ?= lex
|
||||||
LFLAGS=
|
LFLAGS=
|
||||||
LEX.l= ${LEX} ${LFLAGS}
|
LEX.l ?= ${LEX} ${LFLAGS}
|
||||||
|
|
||||||
LD= ld
|
LD ?= ld
|
||||||
LDFLAGS=
|
LDFLAGS=
|
||||||
|
|
||||||
LINT= lint
|
LINT ?= lint
|
||||||
LINTFLAGS= -chapbx
|
LINTFLAGS ?= -chapbx
|
||||||
|
|
||||||
PC= pc
|
PC ?= pc
|
||||||
PFLAGS=
|
PFLAGS=
|
||||||
COMPILE.p= ${PC} ${PFLAGS} ${CPPFLAGS} -c
|
COMPILE.p ?= ${PC} ${PFLAGS} ${CPPFLAGS} -c
|
||||||
LINK.p= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
LINK.p ?= ${PC} ${PFLAGS} ${CPPFLAGS} ${LDFLAGS}
|
||||||
|
|
||||||
.if exists(/usr/local/bin/bison) || exists(/opt/gnu/bin/bison)
|
.if exists(/usr/local/bin/bison) || exists(/opt/gnu/bin/bison)
|
||||||
YACC= bison -y
|
YACC ?= bison -y
|
||||||
.else
|
.else
|
||||||
YACC= yacc
|
YACC ?= yacc
|
||||||
.endif
|
.endif
|
||||||
YFLAGS= -d
|
YFLAGS ?= -d
|
||||||
YACC.y= ${YACC} ${YFLAGS}
|
YACC.y ?= ${YACC} ${YFLAGS}
|
||||||
|
|
||||||
# C
|
# C
|
||||||
.c:
|
.c:
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
# $Id: UnixWare.mk,v 1.4 2020/04/17 21:08:17 sjg Exp $
|
# $Id: UnixWare.mk,v 1.6 2020/06/29 14:34:42 sjg Exp $
|
||||||
# based on "Id: SunOS.5.sys.mk,v 1.6 2003/09/30 16:42:23 sjg Exp "
|
# based on "Id: SunOS.5.sys.mk,v 1.6 2003/09/30 16:42:23 sjg Exp "
|
||||||
# $NetBSD: sys.mk,v 1.19.2.1 1994/07/26 19:58:31 cgd Exp $
|
# $NetBSD: sys.mk,v 1.19.2.1 1994/07/26 19:58:31 cgd Exp $
|
||||||
# @(#)sys.mk 5.11 (Berkeley) 3/13/91
|
# @(#)sys.mk 5.11 (Berkeley) 3/13/91
|
||||||
|
|
||||||
OS ?= UnixWare
|
OS ?= UnixWare
|
||||||
unix ?= We run ${OS}.
|
unix ?= We run ${OS}.
|
||||||
ROOT_GROUP= root
|
ROOT_GROUP ?= root
|
||||||
|
|
||||||
# can't fine one anywhere, so just stop the dependency
|
# can't fine one anywhere, so just stop the dependency
|
||||||
LIBCRT0= /dev/null
|
LIBCRT0 ?= /dev/null
|
||||||
|
|
||||||
PATH=/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/ccs/lib:/usr/ucb:/usr/local/bin
|
PATH ?=/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/ccs/lib:/usr/ucb:/usr/local/bin
|
||||||
|
|
||||||
.SUFFIXES: .out .a .ln .o .c ${CXX_SUFFIXES} .F .f .r .y .l .s .S .cl .p .h .sh .m4
|
.SUFFIXES: .out .a .ln .o .c ${CXX_SUFFIXES} .F .f .r .y .l .s .S .cl .p .h .sh .m4
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: nonints.h,v 1.75 2020/04/25 18:20:57 christos Exp $ */
|
/* $NetBSD: nonints.h,v 1.78 2020/07/03 07:40:13 rillig Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 1988, 1989, 1990, 1993
|
* Copyright (c) 1988, 1989, 1990, 1993
|
||||||
@ -139,7 +139,7 @@ Lst Parse_MainName(void);
|
|||||||
char *str_concat(const char *, const char *, int);
|
char *str_concat(const char *, const char *, int);
|
||||||
char **brk_string(const char *, int *, Boolean, char **);
|
char **brk_string(const char *, int *, Boolean, char **);
|
||||||
char *Str_FindSubstring(const char *, const char *);
|
char *Str_FindSubstring(const char *, const char *);
|
||||||
int Str_Match(const char *, const char *);
|
Boolean Str_Match(const char *, const char *);
|
||||||
char *Str_SYSVMatch(const char *, const char *, size_t *, Boolean *);
|
char *Str_SYSVMatch(const char *, const char *, size_t *, Boolean *);
|
||||||
void Str_SYSVSubst(Buffer *, char *, char *, size_t, Boolean);
|
void Str_SYSVSubst(Buffer *, char *, char *, size_t, Boolean);
|
||||||
|
|
||||||
@ -185,13 +185,20 @@ void Targ_Propagate(void);
|
|||||||
void Targ_Propagate_Wait(void);
|
void Targ_Propagate_Wait(void);
|
||||||
|
|
||||||
/* var.c */
|
/* var.c */
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
VARF_UNDEFERR = 1,
|
||||||
|
VARF_WANTRES = 2,
|
||||||
|
VARF_ASSIGN = 4
|
||||||
|
} Varf_Flags;
|
||||||
|
|
||||||
void Var_Delete(const char *, GNode *);
|
void Var_Delete(const char *, GNode *);
|
||||||
void Var_Set(const char *, const char *, GNode *, int);
|
void Var_Set(const char *, const char *, GNode *);
|
||||||
void Var_Append(const char *, const char *, GNode *);
|
void Var_Append(const char *, const char *, GNode *);
|
||||||
Boolean Var_Exists(const char *, GNode *);
|
Boolean Var_Exists(const char *, GNode *);
|
||||||
char *Var_Value(const char *, GNode *, char **);
|
char *Var_Value(const char *, GNode *, char **);
|
||||||
char *Var_Parse(const char *, GNode *, int, int *, void **);
|
char *Var_Parse(const char *, GNode *, Varf_Flags, int *, void **);
|
||||||
char *Var_Subst(const char *, const char *, GNode *, int);
|
char *Var_Subst(const char *, const char *, GNode *, Varf_Flags);
|
||||||
char *Var_GetTail(const char *);
|
char *Var_GetTail(const char *);
|
||||||
char *Var_GetHead(const char *);
|
char *Var_GetHead(const char *);
|
||||||
void Var_Init(void);
|
void Var_Init(void);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: parse.c,v 1.233 2019/09/26 21:09:55 sjg Exp $ */
|
/* $NetBSD: parse.c,v 1.236 2020/07/03 08:13:23 rillig 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: parse.c,v 1.233 2019/09/26 21:09:55 sjg Exp $";
|
static char rcsid[] = "$NetBSD: parse.c,v 1.236 2020/07/03 08:13:23 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)parse.c 8.3 (Berkeley) 3/19/94";
|
static char sccsid[] = "@(#)parse.c 8.3 (Berkeley) 3/19/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: parse.c,v 1.233 2019/09/26 21:09:55 sjg Exp $");
|
__RCSID("$NetBSD: parse.c,v 1.236 2020/07/03 08:13:23 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -657,14 +657,14 @@ ParseFindKeyword(const char *str)
|
|||||||
diff = strcmp(str, parseKeywords[cur].name);
|
diff = strcmp(str, parseKeywords[cur].name);
|
||||||
|
|
||||||
if (diff == 0) {
|
if (diff == 0) {
|
||||||
return (cur);
|
return cur;
|
||||||
} else if (diff < 0) {
|
} else if (diff < 0) {
|
||||||
end = cur - 1;
|
end = cur - 1;
|
||||||
} else {
|
} else {
|
||||||
start = cur + 1;
|
start = cur + 1;
|
||||||
}
|
}
|
||||||
} while (start <= end);
|
} while (start <= end);
|
||||||
return (-1);
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -889,7 +889,7 @@ ParseLinkSrc(void *pgnp, void *cgnp)
|
|||||||
Targ_PrintNode(pgn, 0);
|
Targ_PrintNode(pgn, 0);
|
||||||
Targ_PrintNode(cgn, 0);
|
Targ_PrintNode(cgn, 0);
|
||||||
}
|
}
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -926,7 +926,7 @@ ParseDoOp(void *gnp, void *opp)
|
|||||||
!OP_NOP(gn->type) && !OP_NOP(op))
|
!OP_NOP(gn->type) && !OP_NOP(op))
|
||||||
{
|
{
|
||||||
Parse_Error(PARSE_FATAL, "Inconsistent operator for %s", gn->name);
|
Parse_Error(PARSE_FATAL, "Inconsistent operator for %s", gn->name);
|
||||||
return (1);
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((op == OP_DOUBLEDEP) && ((gn->type & OP_OPMASK) == OP_DOUBLEDEP)) {
|
if ((op == OP_DOUBLEDEP) && ((gn->type & OP_OPMASK) == OP_DOUBLEDEP)) {
|
||||||
@ -970,7 +970,7 @@ ParseDoOp(void *gnp, void *opp)
|
|||||||
gn->type |= op;
|
gn->type |= op;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1146,7 +1146,7 @@ static int
|
|||||||
ParseAddDir(void *path, void *name)
|
ParseAddDir(void *path, void *name)
|
||||||
{
|
{
|
||||||
(void)Dir_AddDir((Lst) path, (char *)name);
|
(void)Dir_AddDir((Lst) path, (char *)name);
|
||||||
return(0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1605,7 +1605,7 @@ ParseDoDependency(char *line)
|
|||||||
break;
|
break;
|
||||||
#ifdef POSIX
|
#ifdef POSIX
|
||||||
case Posix:
|
case Posix:
|
||||||
Var_Set("%POSIX", "1003.2", VAR_GLOBAL, 0);
|
Var_Set("%POSIX", "1003.2", VAR_GLOBAL);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
default:
|
default:
|
||||||
@ -1980,13 +1980,13 @@ Parse_DoVar(char *line, GNode *ctxt)
|
|||||||
* so that it gets substituted!
|
* so that it gets substituted!
|
||||||
*/
|
*/
|
||||||
if (!Var_Exists(line, ctxt))
|
if (!Var_Exists(line, ctxt))
|
||||||
Var_Set(line, "", ctxt, 0);
|
Var_Set(line, "", ctxt);
|
||||||
|
|
||||||
cp = Var_Subst(NULL, cp, ctxt, VARF_WANTRES|VARF_ASSIGN);
|
cp = Var_Subst(NULL, cp, ctxt, VARF_WANTRES|VARF_ASSIGN);
|
||||||
oldVars = oldOldVars;
|
oldVars = oldOldVars;
|
||||||
freeCp = TRUE;
|
freeCp = TRUE;
|
||||||
|
|
||||||
Var_Set(line, cp, ctxt, 0);
|
Var_Set(line, cp, ctxt);
|
||||||
} else if (type == VAR_SHELL) {
|
} else if (type == VAR_SHELL) {
|
||||||
char *res;
|
char *res;
|
||||||
const char *error;
|
const char *error;
|
||||||
@ -2002,7 +2002,7 @@ Parse_DoVar(char *line, GNode *ctxt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
res = Cmd_Exec(cp, &error);
|
res = Cmd_Exec(cp, &error);
|
||||||
Var_Set(line, res, ctxt, 0);
|
Var_Set(line, res, ctxt);
|
||||||
free(res);
|
free(res);
|
||||||
|
|
||||||
if (error)
|
if (error)
|
||||||
@ -2011,7 +2011,7 @@ Parse_DoVar(char *line, GNode *ctxt)
|
|||||||
/*
|
/*
|
||||||
* Normal assignment -- just do it.
|
* Normal assignment -- just do it.
|
||||||
*/
|
*/
|
||||||
Var_Set(line, cp, ctxt, 0);
|
Var_Set(line, cp, ctxt);
|
||||||
}
|
}
|
||||||
if (strcmp(line, MAKEOVERRIDES) == 0)
|
if (strcmp(line, MAKEOVERRIDES) == 0)
|
||||||
Main_ExportMAKEFLAGS(FALSE); /* re-export MAKEFLAGS */
|
Main_ExportMAKEFLAGS(FALSE); /* re-export MAKEFLAGS */
|
||||||
@ -2115,7 +2115,7 @@ ParseAddCmd(void *gnp, void *cmd)
|
|||||||
gn->name);
|
gn->name);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
return(0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -2367,9 +2367,9 @@ ParseSetIncludedFile(void)
|
|||||||
char *pd, *dp = NULL;
|
char *pd, *dp = NULL;
|
||||||
|
|
||||||
pf = Var_Value(".PARSEFILE", VAR_GLOBAL, &fp);
|
pf = Var_Value(".PARSEFILE", VAR_GLOBAL, &fp);
|
||||||
Var_Set(".INCLUDEDFROMFILE", pf, VAR_GLOBAL, 0);
|
Var_Set(".INCLUDEDFROMFILE", pf, VAR_GLOBAL);
|
||||||
pd = Var_Value(".PARSEDIR", VAR_GLOBAL, &dp);
|
pd = Var_Value(".PARSEDIR", VAR_GLOBAL, &dp);
|
||||||
Var_Set(".INCLUDEDFROMDIR", pd, VAR_GLOBAL, 0);
|
Var_Set(".INCLUDEDFROMDIR", pd, VAR_GLOBAL);
|
||||||
|
|
||||||
if (DEBUG(PARSE))
|
if (DEBUG(PARSE))
|
||||||
fprintf(debug_file, "%s: ${.INCLUDEDFROMDIR} = `%s' "
|
fprintf(debug_file, "%s: ${.INCLUDEDFROMDIR} = `%s' "
|
||||||
@ -2401,16 +2401,16 @@ ParseSetParseFile(const char *filename)
|
|||||||
|
|
||||||
slash = strrchr(filename, '/');
|
slash = strrchr(filename, '/');
|
||||||
if (slash == NULL) {
|
if (slash == NULL) {
|
||||||
Var_Set(".PARSEDIR", pd = curdir, VAR_GLOBAL, 0);
|
Var_Set(".PARSEDIR", pd = curdir, VAR_GLOBAL);
|
||||||
Var_Set(".PARSEFILE", pf = filename, VAR_GLOBAL, 0);
|
Var_Set(".PARSEFILE", pf = filename, VAR_GLOBAL);
|
||||||
dirname= NULL;
|
dirname= NULL;
|
||||||
} else {
|
} else {
|
||||||
len = slash - filename;
|
len = slash - filename;
|
||||||
dirname = bmake_malloc(len + 1);
|
dirname = bmake_malloc(len + 1);
|
||||||
memcpy(dirname, filename, len);
|
memcpy(dirname, filename, len);
|
||||||
dirname[len] = '\0';
|
dirname[len] = '\0';
|
||||||
Var_Set(".PARSEDIR", pd = dirname, VAR_GLOBAL, 0);
|
Var_Set(".PARSEDIR", pd = dirname, VAR_GLOBAL);
|
||||||
Var_Set(".PARSEFILE", pf = slash + 1, VAR_GLOBAL, 0);
|
Var_Set(".PARSEFILE", pf = slash + 1, VAR_GLOBAL);
|
||||||
}
|
}
|
||||||
if (DEBUG(PARSE))
|
if (DEBUG(PARSE))
|
||||||
fprintf(debug_file, "%s: ${.PARSEDIR} = `%s' ${.PARSEFILE} = `%s'\n",
|
fprintf(debug_file, "%s: ${.PARSEDIR} = `%s' ${.PARSEFILE} = `%s'\n",
|
||||||
@ -2772,7 +2772,7 @@ ParseEOF(void)
|
|||||||
|
|
||||||
/* Restore the PARSEDIR/PARSEFILE variables */
|
/* Restore the PARSEDIR/PARSEFILE variables */
|
||||||
ParseSetParseFile(curFile->fname);
|
ParseSetParseFile(curFile->fname);
|
||||||
return (CONTINUE);
|
return CONTINUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PARSE_RAW 1
|
#define PARSE_RAW 1
|
||||||
@ -3009,7 +3009,7 @@ ParseReadLine(void)
|
|||||||
/* Read next line from for-loop buffer */
|
/* Read next line from for-loop buffer */
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
return (line);
|
return line;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3350,7 +3350,7 @@ Parse_MainName(void)
|
|||||||
else
|
else
|
||||||
(void)Lst_AtEnd(mainList, mainNode);
|
(void)Lst_AtEnd(mainList, mainNode);
|
||||||
Var_Append(".TARGETS", mainNode->name, VAR_GLOBAL);
|
Var_Append(".TARGETS", mainNode->name, VAR_GLOBAL);
|
||||||
return (mainList);
|
return mainList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: str.c,v 1.42 2020/05/06 02:30:10 christos Exp $ */
|
/* $NetBSD: str.c,v 1.51 2020/07/03 07:40:13 rillig 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: str.c,v 1.42 2020/05/06 02:30:10 christos Exp $";
|
static char rcsid[] = "$NetBSD: str.c,v 1.51 2020/07/03 07:40:13 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)str.c 5.8 (Berkeley) 6/1/90";
|
static char sccsid[] = "@(#)str.c 5.8 (Berkeley) 6/1/90";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: str.c,v 1.42 2020/05/06 02:30:10 christos Exp $");
|
__RCSID("$NetBSD: str.c,v 1.51 2020/07/03 07:40:13 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -119,7 +119,7 @@ str_concat(const char *s1, const char *s2, int flags)
|
|||||||
/* copy second string plus EOS into place */
|
/* copy second string plus EOS into place */
|
||||||
memcpy(result + len1, s2, len2 + 1);
|
memcpy(result + len1, s2, len2 + 1);
|
||||||
|
|
||||||
return(result);
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -304,7 +304,7 @@ Str_FindSubstring(const char *string, const char *substring)
|
|||||||
* substring.
|
* substring.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
for (b = substring; *string != 0; string += 1) {
|
for (b = substring; *string != 0; string++) {
|
||||||
if (*string != *b)
|
if (*string != *b)
|
||||||
continue;
|
continue;
|
||||||
a = string;
|
a = string;
|
||||||
@ -320,120 +320,109 @@ Str_FindSubstring(const char *string, const char *substring)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Str_Match --
|
* Str_Match -- Test if a string matches a pattern like "*.[ch]".
|
||||||
*
|
|
||||||
* See if a particular string matches a particular pattern.
|
|
||||||
*
|
|
||||||
* Results: Non-zero is returned if string matches pattern, 0 otherwise. The
|
|
||||||
* matching operation permits the following special characters in the
|
|
||||||
* pattern: *?\[] (see the man page for details on what these mean).
|
|
||||||
*
|
*
|
||||||
* XXX this function does not detect or report malformed patterns.
|
* XXX this function does not detect or report malformed patterns.
|
||||||
*
|
*
|
||||||
|
* Results:
|
||||||
|
* Non-zero is returned if string matches the pattern, 0 otherwise. The
|
||||||
|
* matching operation permits the following special characters in the
|
||||||
|
* pattern: *?\[] (as in fnmatch(3)).
|
||||||
|
*
|
||||||
* Side effects: None.
|
* Side effects: None.
|
||||||
*/
|
*/
|
||||||
int
|
Boolean
|
||||||
Str_Match(const char *string, const char *pattern)
|
Str_Match(const char *str, const char *pat)
|
||||||
{
|
{
|
||||||
char c2;
|
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
/*
|
/*
|
||||||
* See if we're at the end of both the pattern and the
|
* See if we're at the end of both the pattern and the
|
||||||
* string. If, we succeeded. If we're at the end of the
|
* string. If, we succeeded. If we're at the end of the
|
||||||
* pattern but not at the end of the string, we failed.
|
* pattern but not at the end of the string, we failed.
|
||||||
*/
|
*/
|
||||||
if (*pattern == 0)
|
if (*pat == 0)
|
||||||
return(!*string);
|
return *str == 0;
|
||||||
if (*string == 0 && *pattern != '*')
|
if (*str == 0 && *pat != '*')
|
||||||
return(0);
|
return FALSE;
|
||||||
/*
|
|
||||||
* Check for a "*" as the next pattern character. It matches
|
/*
|
||||||
* any substring. We handle this by calling ourselves
|
* A '*' in the pattern matches any substring. We handle this
|
||||||
* recursively for each postfix of string, until either we
|
* by calling ourselves for each suffix of the string.
|
||||||
* match or we reach the end of the string.
|
*/
|
||||||
*/
|
if (*pat == '*') {
|
||||||
if (*pattern == '*') {
|
pat++;
|
||||||
pattern += 1;
|
while (*pat == '*')
|
||||||
if (*pattern == 0)
|
pat++;
|
||||||
return(1);
|
if (*pat == 0)
|
||||||
while (*string != 0) {
|
return TRUE;
|
||||||
if (Str_Match(string, pattern))
|
while (*str != 0) {
|
||||||
return(1);
|
if (Str_Match(str, pat))
|
||||||
++string;
|
return TRUE;
|
||||||
}
|
str++;
|
||||||
return(0);
|
}
|
||||||
}
|
return FALSE;
|
||||||
/*
|
}
|
||||||
* Check for a "?" as the next pattern character. It matches
|
|
||||||
* any single character.
|
/* A '?' in the pattern matches any single character. */
|
||||||
*/
|
if (*pat == '?')
|
||||||
if (*pattern == '?')
|
goto thisCharOK;
|
||||||
goto thisCharOK;
|
|
||||||
/*
|
/*
|
||||||
* Check for a "[" as the next pattern character. It is
|
* A '[' in the pattern matches a character from a list.
|
||||||
* followed by a list of characters that are acceptable, or
|
* The '[' is followed by the list of acceptable characters,
|
||||||
* by a range (two characters separated by "-").
|
* or by ranges (two characters separated by '-'). In these
|
||||||
*/
|
* character lists, the backslash is an ordinary character.
|
||||||
if (*pattern == '[') {
|
*/
|
||||||
int nomatch;
|
if (*pat == '[') {
|
||||||
|
Boolean neg = pat[1] == '^';
|
||||||
|
pat += 1 + neg;
|
||||||
|
|
||||||
++pattern;
|
|
||||||
if (*pattern == '^') {
|
|
||||||
++pattern;
|
|
||||||
nomatch = 1;
|
|
||||||
} else
|
|
||||||
nomatch = 0;
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if ((*pattern == ']') || (*pattern == 0)) {
|
if (*pat == ']' || *pat == 0) {
|
||||||
if (nomatch)
|
if (neg)
|
||||||
break;
|
break;
|
||||||
return(0);
|
return FALSE;
|
||||||
}
|
}
|
||||||
if (*pattern == *string)
|
if (*pat == *str)
|
||||||
break;
|
break;
|
||||||
if (pattern[1] == '-') {
|
if (pat[1] == '-') {
|
||||||
c2 = pattern[2];
|
if (pat[2] == 0)
|
||||||
if (c2 == 0)
|
return neg;
|
||||||
return(nomatch);
|
if (*pat <= *str && pat[2] >= *str)
|
||||||
if ((*pattern <= *string) &&
|
|
||||||
(c2 >= *string))
|
|
||||||
break;
|
break;
|
||||||
if ((*pattern >= *string) &&
|
if (*pat >= *str && pat[2] <= *str)
|
||||||
(c2 <= *string))
|
|
||||||
break;
|
break;
|
||||||
pattern += 2;
|
pat += 2;
|
||||||
}
|
}
|
||||||
++pattern;
|
pat++;
|
||||||
}
|
}
|
||||||
if (nomatch && (*pattern != ']') && (*pattern != 0))
|
if (neg && *pat != ']' && *pat != 0)
|
||||||
return 0;
|
return FALSE;
|
||||||
while ((*pattern != ']') && (*pattern != 0))
|
while (*pat != ']' && *pat != 0)
|
||||||
++pattern;
|
pat++;
|
||||||
if (*pattern == 0)
|
if (*pat == 0)
|
||||||
--pattern;
|
pat--;
|
||||||
goto thisCharOK;
|
goto thisCharOK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If the next pattern character is '/', just strip off the
|
* A backslash in the pattern matches the character following
|
||||||
* '/' so we do exact matching on the character that follows.
|
* it exactly.
|
||||||
*/
|
*/
|
||||||
if (*pattern == '\\') {
|
if (*pat == '\\') {
|
||||||
++pattern;
|
pat++;
|
||||||
if (*pattern == 0)
|
if (*pat == 0)
|
||||||
return(0);
|
return FALSE;
|
||||||
}
|
|
||||||
/*
|
|
||||||
* There's no special character. Just make sure that the
|
|
||||||
* next characters of each string match.
|
|
||||||
*/
|
|
||||||
if (*pattern != *string)
|
|
||||||
return(0);
|
|
||||||
thisCharOK: ++pattern;
|
|
||||||
++string;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (*pat != *str)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
thisCharOK:
|
||||||
|
pat++;
|
||||||
|
str++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: suff.c,v 1.86 2017/04/16 20:38:18 riastradh Exp $ */
|
/* $NetBSD: suff.c,v 1.88 2020/07/03 08:02:55 rillig 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.86 2017/04/16 20:38:18 riastradh Exp $";
|
static char rcsid[] = "$NetBSD: suff.c,v 1.88 2020/07/03 08:02:55 rillig 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.86 2017/04/16 20:38:18 riastradh Exp $");
|
__RCSID("$NetBSD: suff.c,v 1.88 2020/07/03 08:02:55 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -266,7 +266,7 @@ SuffStrIsPrefix(const char *pref, const char *str)
|
|||||||
str++;
|
str++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (*pref ? NULL : str);
|
return *pref ? NULL : str;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -304,7 +304,7 @@ SuffSuffIsSuffix(const Suff *s, const SuffixCmpData *sd)
|
|||||||
p2--;
|
p2--;
|
||||||
}
|
}
|
||||||
|
|
||||||
return (p1 == s->name - 1 ? p2 : NULL);
|
return p1 == s->name - 1 ? p2 : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -324,7 +324,7 @@ SuffSuffIsSuffix(const Suff *s, const SuffixCmpData *sd)
|
|||||||
static int
|
static int
|
||||||
SuffSuffIsSuffixP(const void *s, const void *sd)
|
SuffSuffIsSuffixP(const void *s, const void *sd)
|
||||||
{
|
{
|
||||||
return(!SuffSuffIsSuffix(s, sd));
|
return !SuffSuffIsSuffix(s, sd);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -347,7 +347,7 @@ SuffSuffIsSuffixP(const void *s, const void *sd)
|
|||||||
static int
|
static int
|
||||||
SuffSuffHasNameP(const void *s, const void *sname)
|
SuffSuffHasNameP(const void *s, const void *sname)
|
||||||
{
|
{
|
||||||
return (strcmp(sname, ((const Suff *)s)->name));
|
return strcmp(sname, ((const Suff *)s)->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -394,7 +394,7 @@ SuffSuffIsPrefix(const void *s, const void *str)
|
|||||||
static int
|
static int
|
||||||
SuffGNHasNameP(const void *gn, const void *name)
|
SuffGNHasNameP(const void *gn, const void *name)
|
||||||
{
|
{
|
||||||
return (strcmp(name, ((const GNode *)gn)->name));
|
return strcmp(name, ((const GNode *)gn)->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********** Maintenance Functions ************/
|
/*********** Maintenance Functions ************/
|
||||||
@ -632,9 +632,9 @@ SuffParseTransform(char *str, Suff **srcPtr, Suff **targPtr)
|
|||||||
*/
|
*/
|
||||||
*srcPtr = single;
|
*srcPtr = single;
|
||||||
*targPtr = suffNull;
|
*targPtr = suffNull;
|
||||||
return(TRUE);
|
return TRUE;
|
||||||
}
|
}
|
||||||
return (FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
src = (Suff *)Lst_Datum(srcLn);
|
src = (Suff *)Lst_Datum(srcLn);
|
||||||
str2 = str + src->nameLen;
|
str2 = str + src->nameLen;
|
||||||
@ -646,7 +646,7 @@ SuffParseTransform(char *str, Suff **srcPtr, Suff **targPtr)
|
|||||||
if (targLn != NULL) {
|
if (targLn != NULL) {
|
||||||
*srcPtr = src;
|
*srcPtr = src;
|
||||||
*targPtr = (Suff *)Lst_Datum(targLn);
|
*targPtr = (Suff *)Lst_Datum(targLn);
|
||||||
return (TRUE);
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -674,7 +674,7 @@ Suff_IsTransform(char *str)
|
|||||||
{
|
{
|
||||||
Suff *src, *targ;
|
Suff *src, *targ;
|
||||||
|
|
||||||
return (SuffParseTransform(str, &src, &targ));
|
return SuffParseTransform(str, &src, &targ);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -738,7 +738,7 @@ Suff_AddTransform(char *line)
|
|||||||
SuffInsert(t->children, s);
|
SuffInsert(t->children, s);
|
||||||
SuffInsert(s->parents, t);
|
SuffInsert(s->parents, t);
|
||||||
|
|
||||||
return (gn);
|
return gn;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -860,7 +860,7 @@ SuffRebuildGraph(void *transformp, void *sp)
|
|||||||
s2 = (Suff *)Lst_Datum(ln);
|
s2 = (Suff *)Lst_Datum(ln);
|
||||||
SuffInsert(s2->children, s);
|
SuffInsert(s2->children, s);
|
||||||
SuffInsert(s->parents, s2);
|
SuffInsert(s->parents, s2);
|
||||||
return(0);
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -889,7 +889,7 @@ SuffRebuildGraph(void *transformp, void *sp)
|
|||||||
SuffInsert(s2->parents, s);
|
SuffInsert(s2->parents, s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return(0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1035,7 +1035,7 @@ Suff_GetPath(char *sname)
|
|||||||
return NULL;
|
return NULL;
|
||||||
} else {
|
} else {
|
||||||
s = (Suff *)Lst_Datum(ln);
|
s = (Suff *)Lst_Datum(ln);
|
||||||
return (s->searchPath);
|
return s->searchPath;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1093,9 +1093,9 @@ Suff_DoPaths(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Var_Set(".INCLUDES", ptr = Dir_MakeFlags("-I", inIncludes), VAR_GLOBAL, 0);
|
Var_Set(".INCLUDES", ptr = Dir_MakeFlags("-I", inIncludes), VAR_GLOBAL);
|
||||||
free(ptr);
|
free(ptr);
|
||||||
Var_Set(".LIBS", ptr = Dir_MakeFlags("-L", inLibs), VAR_GLOBAL, 0);
|
Var_Set(".LIBS", ptr = Dir_MakeFlags("-L", inLibs), VAR_GLOBAL);
|
||||||
free(ptr);
|
free(ptr);
|
||||||
|
|
||||||
Lst_Destroy(inIncludes, Dir_Destroy);
|
Lst_Destroy(inIncludes, Dir_Destroy);
|
||||||
@ -1239,7 +1239,7 @@ SuffAddSrc(void *sp, void *lsp)
|
|||||||
fprintf(debug_file, "\n");
|
fprintf(debug_file, "\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return(0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1399,7 +1399,7 @@ SuffFindThem(Lst srcs, Lst slst)
|
|||||||
if (DEBUG(SUFF) && rs) {
|
if (DEBUG(SUFF) && rs) {
|
||||||
fprintf(debug_file, "got it\n");
|
fprintf(debug_file, "got it\n");
|
||||||
}
|
}
|
||||||
return (rs);
|
return rs;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1505,7 +1505,7 @@ SuffFindCmds(Src *targ, Lst slst)
|
|||||||
if (DEBUG(SUFF)) {
|
if (DEBUG(SUFF)) {
|
||||||
fprintf(debug_file, "\tusing existing source %s\n", s->name);
|
fprintf(debug_file, "\tusing existing source %s\n", s->name);
|
||||||
}
|
}
|
||||||
return (ret);
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -1831,7 +1831,7 @@ SuffApplyTransform(GNode *tGn, GNode *sGn, Suff *t, Suff *s)
|
|||||||
* called to link an OP_MEMBER and OP_ARCHV node), so return
|
* called to link an OP_MEMBER and OP_ARCHV node), so return
|
||||||
* FALSE.
|
* FALSE.
|
||||||
*/
|
*/
|
||||||
return(FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
gn = (GNode *)Lst_Datum(ln);
|
gn = (GNode *)Lst_Datum(ln);
|
||||||
@ -1864,7 +1864,7 @@ SuffApplyTransform(GNode *tGn, GNode *sGn, Suff *t, Suff *s)
|
|||||||
*/
|
*/
|
||||||
(void)Lst_AtEnd(sGn->iParents, tGn);
|
(void)Lst_AtEnd(sGn->iParents, tGn);
|
||||||
|
|
||||||
return(TRUE);
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -1941,7 +1941,7 @@ SuffFindArchiveDeps(GNode *gn, Lst slst)
|
|||||||
*/
|
*/
|
||||||
for (i = (sizeof(copy)/sizeof(copy[0]))-1; i >= 0; i--) {
|
for (i = (sizeof(copy)/sizeof(copy[0]))-1; i >= 0; i--) {
|
||||||
char *p1;
|
char *p1;
|
||||||
Var_Set(copy[i], Var_Value(copy[i], mem, &p1), gn, 0);
|
Var_Set(copy[i], Var_Value(copy[i], mem, &p1), gn);
|
||||||
free(p1);
|
free(p1);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1961,13 +1961,13 @@ SuffFindArchiveDeps(GNode *gn, Lst slst)
|
|||||||
/*
|
/*
|
||||||
* Set the other two local variables required for this target.
|
* Set the other two local variables required for this target.
|
||||||
*/
|
*/
|
||||||
Var_Set(MEMBER, name, gn, 0);
|
Var_Set(MEMBER, name, gn);
|
||||||
Var_Set(ARCHIVE, gn->name, gn, 0);
|
Var_Set(ARCHIVE, gn->name, gn);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set $@ for compatibility with other makes
|
* Set $@ for compatibility with other makes
|
||||||
*/
|
*/
|
||||||
Var_Set(TARGET, gn->name, gn, 0);
|
Var_Set(TARGET, gn->name, gn);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now we've got the important local variables set, expand any sources
|
* Now we've got the important local variables set, expand any sources
|
||||||
@ -2213,10 +2213,10 @@ SuffFindNormalDeps(GNode *gn, Lst slst)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Var_Set(TARGET, gn->path ? gn->path : gn->name, gn, 0);
|
Var_Set(TARGET, gn->path ? gn->path : gn->name, gn);
|
||||||
|
|
||||||
pref = (targ != NULL) ? targ->pref : gn->name;
|
pref = (targ != NULL) ? targ->pref : gn->name;
|
||||||
Var_Set(PREFIX, pref, gn, 0);
|
Var_Set(PREFIX, pref, gn);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Now we've got the important local variables set, expand any sources
|
* Now we've got the important local variables set, expand any sources
|
||||||
@ -2246,7 +2246,7 @@ sfnd_abort:
|
|||||||
targ->suff->searchPath));
|
targ->suff->searchPath));
|
||||||
if (gn->path != NULL) {
|
if (gn->path != NULL) {
|
||||||
char *ptr;
|
char *ptr;
|
||||||
Var_Set(TARGET, gn->path, gn, 0);
|
Var_Set(TARGET, gn->path, gn);
|
||||||
|
|
||||||
if (targ != NULL) {
|
if (targ != NULL) {
|
||||||
/*
|
/*
|
||||||
@ -2269,7 +2269,7 @@ sfnd_abort:
|
|||||||
else
|
else
|
||||||
ptr = gn->path;
|
ptr = gn->path;
|
||||||
|
|
||||||
Var_Set(PREFIX, ptr, gn, 0);
|
Var_Set(PREFIX, ptr, gn);
|
||||||
|
|
||||||
gn->path[savep] = savec;
|
gn->path[savep] = savec;
|
||||||
} else {
|
} else {
|
||||||
@ -2286,7 +2286,7 @@ sfnd_abort:
|
|||||||
else
|
else
|
||||||
ptr = gn->path;
|
ptr = gn->path;
|
||||||
|
|
||||||
Var_Set(PREFIX, ptr, gn, 0);
|
Var_Set(PREFIX, ptr, gn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2373,9 +2373,9 @@ sfnd_abort:
|
|||||||
*/
|
*/
|
||||||
targ->node->type |= OP_DEPS_FOUND;
|
targ->node->type |= OP_DEPS_FOUND;
|
||||||
|
|
||||||
Var_Set(PREFIX, targ->pref, targ->node, 0);
|
Var_Set(PREFIX, targ->pref, targ->node);
|
||||||
|
|
||||||
Var_Set(TARGET, targ->node->name, targ->node, 0);
|
Var_Set(TARGET, targ->node->name, targ->node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2458,8 +2458,8 @@ SuffFindDeps(GNode *gn, Lst slst)
|
|||||||
/*
|
/*
|
||||||
* Make sure we have these set, may get revised below.
|
* Make sure we have these set, may get revised below.
|
||||||
*/
|
*/
|
||||||
Var_Set(TARGET, gn->path ? gn->path : gn->name, gn, 0);
|
Var_Set(TARGET, gn->path ? gn->path : gn->name, gn);
|
||||||
Var_Set(PREFIX, gn->name, gn, 0);
|
Var_Set(PREFIX, gn->name, gn);
|
||||||
|
|
||||||
if (DEBUG(SUFF)) {
|
if (DEBUG(SUFF)) {
|
||||||
fprintf(debug_file, "SuffFindDeps (%s)\n", gn->name);
|
fprintf(debug_file, "SuffFindDeps (%s)\n", gn->name);
|
||||||
@ -2488,14 +2488,14 @@ SuffFindDeps(GNode *gn, Lst slst)
|
|||||||
Arch_FindLib(gn, s->searchPath);
|
Arch_FindLib(gn, s->searchPath);
|
||||||
} else {
|
} else {
|
||||||
gn->suffix = NULL;
|
gn->suffix = NULL;
|
||||||
Var_Set(TARGET, gn->name, gn, 0);
|
Var_Set(TARGET, gn->name, gn);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Because a library (-lfoo) target doesn't follow the standard
|
* Because a library (-lfoo) target doesn't follow the standard
|
||||||
* filesystem conventions, we don't set the regular variables for
|
* filesystem conventions, we don't set the regular variables for
|
||||||
* the thing. .PREFIX is simply made empty...
|
* the thing. .PREFIX is simply made empty...
|
||||||
*/
|
*/
|
||||||
Var_Set(PREFIX, "", gn, 0);
|
Var_Set(PREFIX, "", gn);
|
||||||
} else {
|
} else {
|
||||||
SuffFindNormalDeps(gn, slst);
|
SuffFindNormalDeps(gn, slst);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: targ.c,v 1.62 2017/04/16 19:53:58 riastradh Exp $ */
|
/* $NetBSD: targ.c,v 1.63 2020/07/03 08:02:55 rillig 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: targ.c,v 1.62 2017/04/16 19:53:58 riastradh Exp $";
|
static char rcsid[] = "$NetBSD: targ.c,v 1.63 2020/07/03 08:02:55 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)targ.c 8.2 (Berkeley) 3/19/94";
|
static char sccsid[] = "@(#)targ.c 8.2 (Berkeley) 3/19/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: targ.c,v 1.62 2017/04/16 19:53:58 riastradh Exp $");
|
__RCSID("$NetBSD: targ.c,v 1.63 2020/07/03 08:02:55 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
@ -269,7 +269,7 @@ Targ_NewGN(const char *name)
|
|||||||
Lst_AtEnd(allGNs, gn);
|
Lst_AtEnd(allGNs, gn);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return (gn);
|
return gn;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CLEANUP
|
#ifdef CLEANUP
|
||||||
@ -389,7 +389,7 @@ Targ_FindList(Lst names, int flags)
|
|||||||
nodes = Lst_Init(FALSE);
|
nodes = Lst_Init(FALSE);
|
||||||
|
|
||||||
if (Lst_Open(names) == FAILURE) {
|
if (Lst_Open(names) == FAILURE) {
|
||||||
return (nodes);
|
return nodes;
|
||||||
}
|
}
|
||||||
while ((ln = Lst_Next(names)) != NULL) {
|
while ((ln = Lst_Next(names)) != NULL) {
|
||||||
name = (char *)Lst_Datum(ln);
|
name = (char *)Lst_Datum(ln);
|
||||||
@ -406,7 +406,7 @@ Targ_FindList(Lst names, int flags)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Lst_Close(names);
|
Lst_Close(names);
|
||||||
return (nodes);
|
return nodes;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -428,9 +428,9 @@ Boolean
|
|||||||
Targ_Ignore(GNode *gn)
|
Targ_Ignore(GNode *gn)
|
||||||
{
|
{
|
||||||
if (ignoreErrors || gn->type & OP_IGNORE) {
|
if (ignoreErrors || gn->type & OP_IGNORE) {
|
||||||
return (TRUE);
|
return TRUE;
|
||||||
} else {
|
} else {
|
||||||
return (FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -453,9 +453,9 @@ Boolean
|
|||||||
Targ_Silent(GNode *gn)
|
Targ_Silent(GNode *gn)
|
||||||
{
|
{
|
||||||
if (beSilent || gn->type & OP_SILENT) {
|
if (beSilent || gn->type & OP_SILENT) {
|
||||||
return (TRUE);
|
return TRUE;
|
||||||
} else {
|
} else {
|
||||||
return (FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -478,9 +478,9 @@ Boolean
|
|||||||
Targ_Precious(GNode *gn)
|
Targ_Precious(GNode *gn)
|
||||||
{
|
{
|
||||||
if (allPrecious || (gn->type & (OP_PRECIOUS|OP_DOUBLEDEP))) {
|
if (allPrecious || (gn->type & (OP_PRECIOUS|OP_DOUBLEDEP))) {
|
||||||
return (TRUE);
|
return TRUE;
|
||||||
} else {
|
} else {
|
||||||
return (FALSE);
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -549,7 +549,7 @@ Targ_FmtTime(time_t tm)
|
|||||||
|
|
||||||
parts = localtime(&tm);
|
parts = localtime(&tm);
|
||||||
(void)strftime(buf, sizeof buf, "%k:%M:%S %b %d, %Y", parts);
|
(void)strftime(buf, sizeof buf, "%k:%M:%S %b %d, %Y", parts);
|
||||||
return(buf);
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -698,7 +698,7 @@ Targ_PrintNode(void *gnp, void *passp)
|
|||||||
Lst_ForEach(gn->cohorts, Targ_PrintNode, &pass);
|
Lst_ForEach(gn->cohorts, Targ_PrintNode, &pass);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -794,7 +794,7 @@ TargPropagateNode(void *gnp, void *junk MAKE_ATTR_UNUSED)
|
|||||||
|
|
||||||
if (gn->type & OP_DOUBLEDEP)
|
if (gn->type & OP_DOUBLEDEP)
|
||||||
Lst_ForEach(gn->cohorts, TargPropagateCohort, gnp);
|
Lst_ForEach(gn->cohorts, TargPropagateCohort, gnp);
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
@ -822,7 +822,7 @@ TargPropagateCohort(void *cgnp, void *pgnp)
|
|||||||
GNode *pgn = (GNode *)pgnp;
|
GNode *pgn = (GNode *)pgnp;
|
||||||
|
|
||||||
cgn->type |= pgn->type & ~OP_OPMASK;
|
cgn->type |= pgn->type & ~OP_OPMASK;
|
||||||
return (0);
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* $NetBSD: trace.c,v 1.11 2008/12/28 18:31:51 christos Exp $ */
|
/* $NetBSD: trace.c,v 1.12 2020/07/03 08:13:23 rillig Exp $ */
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
* Copyright (c) 2000 The NetBSD Foundation, Inc.
|
* Copyright (c) 2000 The NetBSD Foundation, Inc.
|
||||||
@ -31,11 +31,11 @@
|
|||||||
|
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: trace.c,v 1.11 2008/12/28 18:31:51 christos Exp $";
|
static char rcsid[] = "$NetBSD: trace.c,v 1.12 2020/07/03 08:13:23 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
__RCSID("$NetBSD: trace.c,v 1.11 2008/12/28 18:31:51 christos Exp $");
|
__RCSID("$NetBSD: trace.c,v 1.12 2020/07/03 08:13:23 rillig Exp $");
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# $Id: Makefile,v 1.54 2020/05/17 17:26:14 sjg Exp $
|
# $Id: Makefile,v 1.58 2020/07/04 22:33:00 sjg Exp $
|
||||||
#
|
#
|
||||||
# $NetBSD: Makefile,v 1.58 2020/05/17 12:36:26 rillig Exp $
|
# $NetBSD: Makefile,v 1.59 2020/06/28 09:42:40 rillig Exp $
|
||||||
#
|
#
|
||||||
# Unit tests for make(1)
|
# Unit tests for make(1)
|
||||||
# The main targets are:
|
# The main targets are:
|
||||||
@ -27,6 +27,7 @@ UNIT_TESTS:= ${.PARSEDIR}
|
|||||||
TESTNAMES= \
|
TESTNAMES= \
|
||||||
comment \
|
comment \
|
||||||
cond-late \
|
cond-late \
|
||||||
|
cond-short \
|
||||||
cond1 \
|
cond1 \
|
||||||
cond2 \
|
cond2 \
|
||||||
dollar \
|
dollar \
|
||||||
@ -104,6 +105,9 @@ LANG= C
|
|||||||
SED_CMDS.varshell = -e 's,^[a-z]*sh: ,,' \
|
SED_CMDS.varshell = -e 's,^[a-z]*sh: ,,' \
|
||||||
-e '/command/s,No such.*,not found,'
|
-e '/command/s,No such.*,not found,'
|
||||||
|
|
||||||
|
# the detailed error message can vary across systems
|
||||||
|
SED_CMDS.modmisc = -e 's,\(substitution error:\).*,\1 details omitted,'
|
||||||
|
|
||||||
# the tests are actually done with sub-makes.
|
# the tests are actually done with sub-makes.
|
||||||
.SUFFIXES: .mk .rawout .out
|
.SUFFIXES: .mk .rawout .out
|
||||||
.mk.rawout:
|
.mk.rawout:
|
||||||
|
10
contrib/bmake/unit-tests/cond-short.exp
Normal file
10
contrib/bmake/unit-tests/cond-short.exp
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
expected and
|
||||||
|
expected and exists
|
||||||
|
expected and empty
|
||||||
|
expected U23 condition
|
||||||
|
expected VAR23
|
||||||
|
expected M pattern
|
||||||
|
expected or
|
||||||
|
expected or exists
|
||||||
|
expected or empty
|
||||||
|
exit status 0
|
101
contrib/bmake/unit-tests/cond-short.mk
Normal file
101
contrib/bmake/unit-tests/cond-short.mk
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
# $NetBSD: cond-short.mk,v 1.6 2020/07/02 16:37:56 rillig Exp $
|
||||||
|
#
|
||||||
|
# Demonstrates that in conditions, the right-hand side of an && or ||
|
||||||
|
# is only evaluated if it can actually influence the result.
|
||||||
|
#
|
||||||
|
# Between 2015-10-11 and 2020-06-28, the right-hand side of an && or ||
|
||||||
|
# operator was always evaluated, which was wrong.
|
||||||
|
#
|
||||||
|
|
||||||
|
# The && operator.
|
||||||
|
|
||||||
|
.if 0 && ${echo "unexpected and" 1>&2 :L:sh}
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 1 && ${echo "expected and" 1>&2 :L:sh}
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 0 && exists(nonexistent${echo "unexpected and exists" 1>&2 :L:sh})
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 1 && exists(nonexistent${echo "expected and exists" 1>&2 :L:sh})
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 0 && empty(${echo "unexpected and empty" 1>&2 :L:sh})
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 1 && empty(${echo "expected and empty" 1>&2 :L:sh})
|
||||||
|
.endif
|
||||||
|
|
||||||
|
# "VAR U11" is not evaluated; it was evaluated before 2020-07-02.
|
||||||
|
# The whole !empty condition is only parsed and then discarded.
|
||||||
|
VAR= ${VAR${:U11${echo "unexpected VAR U11" 1>&2 :L:sh}}}
|
||||||
|
VAR13= ${VAR${:U12${echo "unexpected VAR13" 1>&2 :L:sh}}}
|
||||||
|
.if 0 && !empty(VAR${:U13${echo "unexpected U13 condition" 1>&2 :L:sh}})
|
||||||
|
.endif
|
||||||
|
|
||||||
|
VAR= ${VAR${:U21${echo "unexpected VAR U21" 1>&2 :L:sh}}}
|
||||||
|
VAR23= ${VAR${:U22${echo "expected VAR23" 1>&2 :L:sh}}}
|
||||||
|
.if 1 && !empty(VAR${:U23${echo "expected U23 condition" 1>&2 :L:sh}})
|
||||||
|
.endif
|
||||||
|
VAR= # empty again, for the following tests
|
||||||
|
|
||||||
|
# The :M modifier is only parsed, not evaluated.
|
||||||
|
# Before 2020-07-02, it was wrongly evaluated.
|
||||||
|
.if 0 && !empty(VAR:M${:U${echo "unexpected M pattern" 1>&2 :L:sh}})
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 1 && !empty(VAR:M${:U${echo "expected M pattern" 1>&2 :L:sh}})
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 0 && !empty(VAR:S,from,${:U${echo "unexpected S modifier" 1>&2 :L:sh}},)
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 0 && !empty(VAR:C,from,${:U${echo "unexpected C modifier" 1>&2 :L:sh}},)
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 0 && !empty("" == "" :? ${:U${echo "unexpected ? modifier" 1>&2 :L:sh}} :)
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 0 && !empty(VAR:old=${:U${echo "unexpected = modifier" 1>&2 :L:sh}})
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 0 && !empty(1 2 3:L:@var@${:U${echo "unexpected @ modifier" 1>&2 :L:sh}}@)
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 0 && !empty(:U${:!echo "unexpected exclam modifier" 1>&2 !})
|
||||||
|
.endif
|
||||||
|
|
||||||
|
# The || operator.
|
||||||
|
|
||||||
|
.if 1 || ${echo "unexpected or" 1>&2 :L:sh}
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 0 || ${echo "expected or" 1>&2 :L:sh}
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 1 || exists(nonexistent${echo "unexpected or exists" 1>&2 :L:sh})
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 0 || exists(nonexistent${echo "expected or exists" 1>&2 :L:sh})
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 1 || empty(${echo "unexpected or empty" 1>&2 :L:sh})
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 0 || empty(${echo "expected or empty" 1>&2 :L:sh})
|
||||||
|
.endif
|
||||||
|
|
||||||
|
# Unreachable nested conditions are skipped completely as well.
|
||||||
|
|
||||||
|
.if 0
|
||||||
|
. if ${echo "unexpected nested and" 1>&2 :L:sh}
|
||||||
|
. endif
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if 1
|
||||||
|
.elif ${echo "unexpected nested or" 1>&2 :L:sh}
|
||||||
|
.endif
|
||||||
|
|
||||||
|
all:
|
||||||
|
@:;:
|
@ -15,7 +15,7 @@ res = no
|
|||||||
res = OK
|
res = OK
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
all: show-libs check-cclass
|
all: show-libs check-cclass slow
|
||||||
|
|
||||||
show-libs:
|
show-libs:
|
||||||
@for x in $X; do ${.MAKE} -f ${MAKEFILE} show LIB=$$x; done
|
@for x in $X; do ${.MAKE} -f ${MAKEFILE} show LIB=$$x; done
|
||||||
@ -32,3 +32,8 @@ check-cclass:
|
|||||||
@echo Upper=${LIST:M[A-Z]*}
|
@echo Upper=${LIST:M[A-Z]*}
|
||||||
@echo Lower=${LIST:M[^A-Z]*}
|
@echo Lower=${LIST:M[^A-Z]*}
|
||||||
@echo nose=${LIST:M[^s]*[ex]}
|
@echo nose=${LIST:M[^s]*[ex]}
|
||||||
|
|
||||||
|
# Before 2020-06-13, this expression took quite a long time in Str_Match,
|
||||||
|
# calling itself 601080390 times for 16 asterisks.
|
||||||
|
slow: .PHONY
|
||||||
|
@:;: ${:U****************:M****************b:Q}
|
||||||
|
@ -7,4 +7,29 @@ path_/usr/xbin=/opt/xbin/
|
|||||||
paths=/bin /tmp / /no/such/dir /opt/xbin
|
paths=/bin /tmp / /no/such/dir /opt/xbin
|
||||||
PATHS=/BIN /TMP / /NO/SUCH/DIR /OPT/XBIN
|
PATHS=/BIN /TMP / /NO/SUCH/DIR /OPT/XBIN
|
||||||
The answer is 42
|
The answer is 42
|
||||||
|
dirname of 'a/b/c def a.b.c a.b/c a a.a .gitignore a a.a' is 'a/b . . a.b . . . . .'
|
||||||
|
basename of 'a/b/c def a.b.c a.b/c a a.a .gitignore a a.a' is 'c def a.b.c c a a.a .gitignore a a.a'
|
||||||
|
suffix of 'a/b/c def a.b.c a.b/c a a.a .gitignore a a.a' is 'c b/c a gitignore a'
|
||||||
|
root of 'a/b/c def a.b.c a.b/c a a.a .gitignore a a.a' is 'a/b/c def a.b a a a a a'
|
||||||
|
S:
|
||||||
|
C:
|
||||||
|
@:
|
||||||
|
S:empty
|
||||||
|
C:empty
|
||||||
|
@:
|
||||||
|
:a b b c:
|
||||||
|
:a b b c:
|
||||||
|
: b c:
|
||||||
|
:a c:
|
||||||
|
:x__ 3 x__ 3:
|
||||||
|
:a b b c:
|
||||||
|
:a b b c:
|
||||||
|
: b c:
|
||||||
|
make: RE substitution error: details omitted
|
||||||
|
make: Unclosed substitution for (, missing)
|
||||||
|
:C,word,____,:Q}:
|
||||||
|
:a c:
|
||||||
|
:x__ 3 x__ 3:
|
||||||
|
:+one+ +two+ +three+:
|
||||||
|
mod-at-resolve:w1d2d3w w2i3w w1i2d3 2i${RES3}w w1d2d3 2i${RES3} 1i${RES2}w:
|
||||||
exit status 0
|
exit status 0
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# $Id: modmisc.mk,v 1.1.1.1 2014/08/30 18:57:18 sjg Exp $
|
# $Id: modmisc.mk,v 1.1.1.2 2020/07/04 17:52:46 sjg Exp $
|
||||||
#
|
#
|
||||||
# miscellaneous modifier tests
|
# miscellaneous modifier tests
|
||||||
|
|
||||||
@ -15,7 +15,8 @@ MOD_HOMES=S,/home/,/homes/,
|
|||||||
MOD_OPT=@d@$${exists($$d):?$$d:$${d:S,/usr,/opt,}}@
|
MOD_OPT=@d@$${exists($$d):?$$d:$${d:S,/usr,/opt,}}@
|
||||||
MOD_SEP=S,:, ,g
|
MOD_SEP=S,:, ,g
|
||||||
|
|
||||||
all: modvar modvarloop modsysv
|
all: modvar modvarloop modsysv mod-HTE emptyvar undefvar
|
||||||
|
all: mod-S mod-C mod-at-varname mod-at-resolve
|
||||||
|
|
||||||
modsysv:
|
modsysv:
|
||||||
@echo "The answer is ${libfoo.a:L:libfoo.a=42}"
|
@echo "The answer is ${libfoo.a:L:libfoo.a=42}"
|
||||||
@ -36,3 +37,59 @@ modvarloop:
|
|||||||
@echo "path_/usr/xbin=${path_/usr/xbin}"
|
@echo "path_/usr/xbin=${path_/usr/xbin}"
|
||||||
@echo "paths=${paths}"
|
@echo "paths=${paths}"
|
||||||
@echo "PATHS=${paths:tu}"
|
@echo "PATHS=${paths:tu}"
|
||||||
|
|
||||||
|
PATHNAMES= a/b/c def a.b.c a.b/c a a.a .gitignore a a.a
|
||||||
|
mod-HTE:
|
||||||
|
@echo "dirname of '"${PATHNAMES:Q}"' is '"${PATHNAMES:H:Q}"'"
|
||||||
|
@echo "basename of '"${PATHNAMES:Q}"' is '"${PATHNAMES:T:Q}"'"
|
||||||
|
@echo "suffix of '"${PATHNAMES:Q}"' is '"${PATHNAMES:E:Q}"'"
|
||||||
|
@echo "root of '"${PATHNAMES:Q}"' is '"${PATHNAMES:R:Q}"'"
|
||||||
|
|
||||||
|
# When a modifier is applied to the "" variable, the result is discarded.
|
||||||
|
emptyvar:
|
||||||
|
@echo S:${:S,^$,empty,}
|
||||||
|
@echo C:${:C,^$,empty,}
|
||||||
|
@echo @:${:@var@${var}@}
|
||||||
|
|
||||||
|
# The :U modifier turns even the "" variable into something that has a value.
|
||||||
|
# The resulting variable is empty, but is still considered to contain a
|
||||||
|
# single empty word. This word can be accessed by the :S and :C modifiers,
|
||||||
|
# but not by the :@ modifier since it explicitly skips empty words.
|
||||||
|
undefvar:
|
||||||
|
@echo S:${:U:S,^$,empty,}
|
||||||
|
@echo C:${:U:C,^$,empty,}
|
||||||
|
@echo @:${:U:@var@empty@}
|
||||||
|
|
||||||
|
mod-S:
|
||||||
|
@echo :${:Ua b b c:S,a b,,:Q}:
|
||||||
|
@echo :${:Ua b b c:S,a b,,1:Q}:
|
||||||
|
@echo :${:Ua b b c:S,a b,,W:Q}:
|
||||||
|
@echo :${:Ua b b c:S,b,,g:Q}:
|
||||||
|
@echo :${:U1 2 3 1 2 3:S,1 2,___,Wg:S,_,x,:Q}:
|
||||||
|
|
||||||
|
mod-C:
|
||||||
|
@echo :${:Ua b b c:C,a b,,:Q}:
|
||||||
|
@echo :${:Ua b b c:C,a b,,1:Q}:
|
||||||
|
@echo :${:Ua b b c:C,a b,,W:Q}:
|
||||||
|
@echo :${:Uword1 word2:C,****,____,g:C,word,____,:Q}:
|
||||||
|
@echo :${:Ua b b c:C,b,,g:Q}:
|
||||||
|
@echo :${:U1 2 3 1 2 3:C,1 2,___,Wg:C,_,x,:Q}:
|
||||||
|
|
||||||
|
# In the :@ modifier, the name of the loop variable can even be generated
|
||||||
|
# dynamically. There's no practical use-case for this, and hopefully nobody
|
||||||
|
# will ever depend on this, but technically it's possible.
|
||||||
|
mod-at-varname:
|
||||||
|
@echo :${:Uone two three:@${:Ubar:S,b,v,}@+${var}+@:Q}:
|
||||||
|
|
||||||
|
# The :@ modifier resolves the variables a little more often than expected.
|
||||||
|
# In particular, it resolves _all_ variables from the context, and not only
|
||||||
|
# the loop variable (in this case v).
|
||||||
|
#
|
||||||
|
# The d means direct reference, the i means indirect reference.
|
||||||
|
RESOLVE= ${RES1} $${RES1}
|
||||||
|
RES1= 1d${RES2} 1i$${RES2}
|
||||||
|
RES2= 2d${RES3} 2i$${RES3}
|
||||||
|
RES3= 3
|
||||||
|
|
||||||
|
mod-at-resolve:
|
||||||
|
@echo $@:${RESOLVE:@v@w${v}w@:Q}:
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
LIST = one two three four five six seven eight nine ten
|
LIST = one two three four five six seven eight nine ten
|
||||||
LIST:O = eight five four nine one seven six ten three two
|
LIST:O = eight five four nine one seven six ten three two
|
||||||
|
LIST:Or = two three ten six seven one nine four five eight
|
||||||
LIST:Ox = Ok
|
LIST:Ox = Ok
|
||||||
LIST:O:Ox = Ok
|
LIST:O:Ox = Ok
|
||||||
LISTX = Ok
|
LISTX = Ok
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# $NetBSD: modorder.mk,v 1.2 2020/01/07 22:42:14 rillig Exp $
|
# $NetBSD: modorder.mk,v 1.3 2020/06/09 01:48:17 sjg Exp $
|
||||||
|
|
||||||
LIST= one two three four five six seven eight nine ten
|
LIST= one two three four five six seven eight nine ten
|
||||||
LISTX= ${LIST:Ox}
|
LISTX= ${LIST:Ox}
|
||||||
@ -10,6 +10,7 @@ TEST_RESULT= && echo Ok || echo Failed
|
|||||||
all:
|
all:
|
||||||
@echo "LIST = ${LIST}"
|
@echo "LIST = ${LIST}"
|
||||||
@echo "LIST:O = ${LIST:O}"
|
@echo "LIST:O = ${LIST:O}"
|
||||||
|
@echo "LIST:Or = ${LIST:Or}"
|
||||||
# Note that 1 in every 10! trials two independently generated
|
# Note that 1 in every 10! trials two independently generated
|
||||||
# randomized orderings will be the same. The test framework doesn't
|
# randomized orderings will be the same. The test framework doesn't
|
||||||
# support checking probabilistic output, so we accept that each of the
|
# support checking probabilistic output, so we accept that each of the
|
||||||
|
@ -12,4 +12,5 @@ asam.c.c
|
|||||||
asam.c
|
asam.c
|
||||||
a.c.c
|
a.c.c
|
||||||
|
|
||||||
|
ax:Q b c d eb
|
||||||
exit status 0
|
exit status 0
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# $Id: sysv.mk,v 1.4 2020/05/07 01:17:51 sjg Exp $
|
# $Id: sysv.mk,v 1.5 2020/07/04 18:16:55 sjg Exp $
|
||||||
|
|
||||||
FOO ?=
|
FOO ?=
|
||||||
FOOBAR = ${FOO:=bar}
|
FOOBAR = ${FOO:=bar}
|
||||||
@ -11,7 +11,7 @@ FUN = ${B}${S}fun
|
|||||||
SUN = the Sun
|
SUN = the Sun
|
||||||
|
|
||||||
# we expect nothing when FOO is empty
|
# we expect nothing when FOO is empty
|
||||||
all: foo fun sam bla
|
all: foo fun sam bla words
|
||||||
|
|
||||||
foo:
|
foo:
|
||||||
@echo FOOBAR = ${FOOBAR}
|
@echo FOOBAR = ${FOOBAR}
|
||||||
@ -41,3 +41,8 @@ BLA=
|
|||||||
|
|
||||||
bla:
|
bla:
|
||||||
@echo $(BLA:%=foo/%x)
|
@echo $(BLA:%=foo/%x)
|
||||||
|
|
||||||
|
# The :Q looks like a modifier but isn't.
|
||||||
|
# It is part of the replacement string.
|
||||||
|
words:
|
||||||
|
@echo a${a b c d e:L:%a=x:Q}b
|
||||||
|
@ -22,4 +22,5 @@ date=20160401
|
|||||||
Version=123.456.789 == 123456789
|
Version=123.456.789 == 123456789
|
||||||
Literal=3.4.5 == 3004005
|
Literal=3.4.5 == 3004005
|
||||||
We have target specific vars
|
We have target specific vars
|
||||||
|
MAN= make.1
|
||||||
exit status 0
|
exit status 0
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
# $Id: varmisc.mk,v 1.9 2017/02/01 18:44:54 sjg Exp $
|
# $Id: varmisc.mk,v 1.11 2020/07/02 15:43:43 sjg Exp $
|
||||||
#
|
#
|
||||||
# Miscellaneous variable tests.
|
# Miscellaneous variable tests.
|
||||||
|
|
||||||
all: unmatched_var_paren D_true U_true D_false U_false Q_lhs Q_rhs NQ_none \
|
all: unmatched_var_paren D_true U_true D_false U_false Q_lhs Q_rhs NQ_none \
|
||||||
strftime cmpv
|
strftime cmpv manok
|
||||||
|
|
||||||
unmatched_var_paren:
|
unmatched_var_paren:
|
||||||
@echo ${foo::=foo-text}
|
@echo ${foo::=foo-text}
|
||||||
@ -60,3 +60,25 @@ cmpv:
|
|||||||
@echo Version=${Version} == ${Version:${M_cmpv}}
|
@echo Version=${Version} == ${Version:${M_cmpv}}
|
||||||
@echo Literal=3.4.5 == ${3.4.5:L:${M_cmpv}}
|
@echo Literal=3.4.5 == ${3.4.5:L:${M_cmpv}}
|
||||||
@echo We have ${${.TARGET:T}.only}
|
@echo We have ${${.TARGET:T}.only}
|
||||||
|
|
||||||
|
# catch misshandling of nested vars in .for loop
|
||||||
|
MAN=
|
||||||
|
MAN1= make.1
|
||||||
|
.for s in 1 2
|
||||||
|
.if defined(MAN$s) && !empty(MAN$s)
|
||||||
|
MAN+= ${MAN$s}
|
||||||
|
.endif
|
||||||
|
.endfor
|
||||||
|
|
||||||
|
manok:
|
||||||
|
@echo MAN=${MAN}
|
||||||
|
|
||||||
|
# This is an expanded variant of the above .for loop.
|
||||||
|
# Between 2020-08-28 and 2020-07-02 this paragraph generated a wrong
|
||||||
|
# error message "Variable VARNAME is recursive".
|
||||||
|
# When evaluating the !empty expression, the ${:U1} was not expanded and
|
||||||
|
# thus resulted in the seeming definition VARNAME=${VARNAME}, which is
|
||||||
|
# obviously recursive.
|
||||||
|
VARNAME= ${VARNAME${:U1}}
|
||||||
|
.if defined(VARNAME${:U2}) && !empty(VARNAME${:U2})
|
||||||
|
.endif
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
/* $NetBSD: util.c,v 1.55 2020/01/07 21:24:16 rillig Exp $ */
|
/* $NetBSD: util.c,v 1.57 2020/07/03 08:13:23 rillig Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Missing stuff from OS's
|
* Missing stuff from OS's
|
||||||
*
|
*
|
||||||
* $Id: util.c,v 1.34 2020/01/22 01:19:25 sjg Exp $
|
* $Id: util.c,v 1.35 2020/07/04 18:16:55 sjg Exp $
|
||||||
*/
|
*/
|
||||||
#if defined(__MINT__) || defined(__linux__)
|
#if defined(__MINT__) || defined(__linux__)
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
@ -12,10 +12,10 @@
|
|||||||
#include "make.h"
|
#include "make.h"
|
||||||
|
|
||||||
#ifndef MAKE_NATIVE
|
#ifndef MAKE_NATIVE
|
||||||
static char rcsid[] = "$NetBSD: util.c,v 1.55 2020/01/07 21:24:16 rillig Exp $";
|
static char rcsid[] = "$NetBSD: util.c,v 1.57 2020/07/03 08:13:23 rillig Exp $";
|
||||||
#else
|
#else
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
__RCSID("$NetBSD: util.c,v 1.55 2020/01/07 21:24:16 rillig Exp $");
|
__RCSID("$NetBSD: util.c,v 1.57 2020/07/03 08:13:23 rillig Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -68,7 +68,7 @@ getenv(const char *name)
|
|||||||
{
|
{
|
||||||
int offset;
|
int offset;
|
||||||
|
|
||||||
return(findenv(name, &offset));
|
return findenv(name, &offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -173,7 +173,7 @@ strrcpy(char *ptr, char *str)
|
|||||||
while (len)
|
while (len)
|
||||||
*--ptr = str[--len];
|
*--ptr = str[--len];
|
||||||
|
|
||||||
return (ptr);
|
return ptr;
|
||||||
} /* end strrcpy */
|
} /* end strrcpy */
|
||||||
|
|
||||||
|
|
||||||
@ -276,7 +276,7 @@ getwd(char *pathname)
|
|||||||
if (st_cur.st_ino == st_root.st_ino &&
|
if (st_cur.st_ino == st_root.st_ino &&
|
||||||
DEV_DEV_COMPARE(st_cur.st_dev, st_root.st_dev)) {
|
DEV_DEV_COMPARE(st_cur.st_dev, st_root.st_dev)) {
|
||||||
(void)strcpy(pathname, *pathptr != '/' ? "/" : pathptr);
|
(void)strcpy(pathname, *pathptr != '/' ? "/" : pathptr);
|
||||||
return (pathname);
|
return pathname;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* open the parent directory */
|
/* open the parent directory */
|
||||||
@ -399,7 +399,7 @@ vsnprintf(char *s, size_t n, const char *fmt, va_list args)
|
|||||||
putc('\0', &fakebuf);
|
putc('\0', &fakebuf);
|
||||||
if (fakebuf._cnt<0)
|
if (fakebuf._cnt<0)
|
||||||
fakebuf._cnt = 0;
|
fakebuf._cnt = 0;
|
||||||
return (n-fakebuf._cnt-1);
|
return n-fakebuf._cnt-1;
|
||||||
#else
|
#else
|
||||||
#ifndef _PATH_DEVNULL
|
#ifndef _PATH_DEVNULL
|
||||||
# define _PATH_DEVNULL "/dev/null"
|
# define _PATH_DEVNULL "/dev/null"
|
||||||
|
3085
contrib/bmake/var.c
3085
contrib/bmake/var.c
File diff suppressed because it is too large
Load Diff
@ -7,7 +7,7 @@ SRCTOP?= ${.CURDIR:H:H}
|
|||||||
|
|
||||||
# things set by configure
|
# things set by configure
|
||||||
|
|
||||||
_MAKE_VERSION?=20200606
|
_MAKE_VERSION?=20200704
|
||||||
|
|
||||||
prefix?= /usr
|
prefix?= /usr
|
||||||
srcdir= ${SRCTOP}/contrib/bmake
|
srcdir= ${SRCTOP}/contrib/bmake
|
||||||
|
Loading…
x
Reference in New Issue
Block a user