mirror of
https://github.com/freebsd/freebsd-src
synced 2024-07-09 12:46:43 +00:00
Import bmake-20200606
Relevant items from ChangeLog: o dir.c: cached_stats - don't confuse stat and lstat results. o var.c: add :Or for reverse sort.
This commit is contained in:
parent
b897d72a5a
commit
abd272d7ca
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/vendor/NetBSD/bmake/dist/; revision=361954 svn path=/vendor/NetBSD/bmake/20200606/; revision=361955; tag=vendor/NetBSD/bmake/20200606
22
ChangeLog
22
ChangeLog
|
@ -1,3 +1,25 @@
|
||||||
|
2020-06-06 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* VERSION (_MAKE_VERSION): 20200606
|
||||||
|
Merge with NetBSD make, pick up
|
||||||
|
o make.1: cleanup
|
||||||
|
|
||||||
|
* Makefile: fix depends for main.o which broke MAKE_VERSION
|
||||||
|
|
||||||
|
2020-06-05 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* VERSION (_MAKE_VERSION): 20200605
|
||||||
|
Merge with NetBSD make, pick up
|
||||||
|
o dir.c: cached_stats - don't confuse stat and lstat results.
|
||||||
|
o var.c: add :Or for reverse sort.
|
||||||
|
|
||||||
|
2020-05-24 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* configure.in: add AC_PROG_CC_C99 for mipspro compiler
|
||||||
|
also if --with-filemon= specifies path to filemon.h
|
||||||
|
set use_filemon=dev
|
||||||
|
* dirname.c: remove include of namespace.h
|
||||||
|
|
||||||
2020-05-17 Simon J Gerraty <sjg@beast.crufty.net>
|
2020-05-17 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
* VERSION (_MAKE_VERSION): 20200517
|
* VERSION (_MAKE_VERSION): 20200517
|
||||||
|
|
8
Makefile
8
Makefile
|
@ -1,4 +1,4 @@
|
||||||
# $Id: Makefile,v 1.104 2020/02/06 01:33:54 sjg Exp $
|
# $Id: Makefile,v 1.107 2020/06/07 21:18:46 sjg Exp $
|
||||||
|
|
||||||
PROG= bmake
|
PROG= bmake
|
||||||
|
|
||||||
|
@ -82,7 +82,7 @@ COPTS.main.c+= "-DMAKE_VERSION=\"${_MAKE_VERSION}\""
|
||||||
# should be set by now
|
# should be set by now
|
||||||
USE_FILEMON ?= no
|
USE_FILEMON ?= no
|
||||||
.if ${USE_FILEMON:tl} != "no"
|
.if ${USE_FILEMON:tl} != "no"
|
||||||
.PATH: ${.CURDIR}/filemon
|
.PATH: ${srcdir}/filemon
|
||||||
SRCS+= filemon_${USE_FILEMON}.c
|
SRCS+= filemon_${USE_FILEMON}.c
|
||||||
COPTS.meta.c+= -DUSE_FILEMON -DUSE_FILEMON_${USE_FILEMON:tu}
|
COPTS.meta.c+= -DUSE_FILEMON -DUSE_FILEMON_${USE_FILEMON:tu}
|
||||||
COPTS.job.c+= ${COPTS.meta.c}
|
COPTS.job.c+= ${COPTS.meta.c}
|
||||||
|
@ -158,7 +158,7 @@ MAN1= ${MAN}
|
||||||
.if (${PROG} != "make")
|
.if (${PROG} != "make")
|
||||||
CLEANFILES+= my.history
|
CLEANFILES+= my.history
|
||||||
.if make(${MAN}) || !exists(${srcdir}/${MAN})
|
.if make(${MAN}) || !exists(${srcdir}/${MAN})
|
||||||
my.history: ${MAKEFILE}
|
my.history:
|
||||||
@(echo ".Nm"; \
|
@(echo ".Nm"; \
|
||||||
echo "is derived from NetBSD"; \
|
echo "is derived from NetBSD"; \
|
||||||
echo ".Xr make 1 ."; \
|
echo ".Xr make 1 ."; \
|
||||||
|
@ -207,7 +207,7 @@ ${OBJS}: config.h
|
||||||
# start-delete2 for bsd.after-import.mk
|
# start-delete2 for bsd.after-import.mk
|
||||||
|
|
||||||
# make sure that MAKE_VERSION gets updated.
|
# make sure that MAKE_VERSION gets updated.
|
||||||
main.o: ${SRCS} ${.CURDIR}/VERSION
|
main.o: ${srcdir}/VERSION
|
||||||
|
|
||||||
.if ${MK_AUTOCONF_MK} == "yes"
|
.if ${MK_AUTOCONF_MK} == "yes"
|
||||||
CONFIGURE_DEPS += ${.CURDIR}/VERSION
|
CONFIGURE_DEPS += ${.CURDIR}/VERSION
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1,2 +1,2 @@
|
||||||
# keep this compatible with sh and make
|
# keep this compatible with sh and make
|
||||||
_MAKE_VERSION=20200517
|
_MAKE_VERSION=20200606
|
||||||
|
|
52
bmake.1
52
bmake.1
|
@ -1,4 +1,4 @@
|
||||||
.\" $NetBSD: make.1,v 1.273 2018/05/27 01:14:51 christos Exp $
|
.\" $NetBSD: make.1,v 1.282 2020/06/06 20:28:42 wiz Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 1990, 1993
|
.\" Copyright (c) 1990, 1993
|
||||||
.\" The Regents of the University of California. All rights reserved.
|
.\" The Regents of the University of California. All rights reserved.
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
.\"
|
.\"
|
||||||
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
|
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
|
||||||
.\"
|
.\"
|
||||||
.Dd May 26, 2018
|
.Dd June 5, 2020
|
||||||
.Dt BMAKE 1
|
.Dt BMAKE 1
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
|
@ -272,7 +272,7 @@ that do not depend on the target whose creation caused the error.
|
||||||
.It Fl m Ar directory
|
.It Fl m Ar directory
|
||||||
Specify a directory in which to search for sys.mk and makefiles included
|
Specify a directory in which to search for sys.mk and makefiles included
|
||||||
via the
|
via the
|
||||||
.Ao Ar file Ac Ns -style
|
.Li \&< Ns Ar file Ns Li \&> Ns -style
|
||||||
include statement.
|
include statement.
|
||||||
The
|
The
|
||||||
.Fl m
|
.Fl m
|
||||||
|
@ -280,7 +280,7 @@ option can be used multiple times to form a search path.
|
||||||
This path will override the default system include path: /usr/share/mk.
|
This path will override the default system include path: /usr/share/mk.
|
||||||
Furthermore the system include path will be appended to the search path used
|
Furthermore the system include path will be appended to the search path used
|
||||||
for
|
for
|
||||||
.Qo Ar file Qc Ns -style
|
.Li \*q Ns Ar file Ns Li \*q Ns -style
|
||||||
include statements (see the
|
include statements (see the
|
||||||
.Fl I
|
.Fl I
|
||||||
option).
|
option).
|
||||||
|
@ -1196,10 +1196,8 @@ but selects all words which do not match
|
||||||
.Ar pattern .
|
.Ar pattern .
|
||||||
.It Cm \&:O
|
.It Cm \&:O
|
||||||
Order every word in variable alphabetically.
|
Order every word in variable alphabetically.
|
||||||
To sort words in
|
.It Cm \&:Or
|
||||||
reverse order use the
|
Order every word in variable in reverse alphabetical order.
|
||||||
.Ql Cm \&:O:[-1..1]
|
|
||||||
combination of modifiers.
|
|
||||||
.It Cm \&:Ox
|
.It Cm \&:Ox
|
||||||
Randomize words in variable.
|
Randomize words in variable.
|
||||||
The results will be different each time you are referring to the
|
The results will be different each time you are referring to the
|
||||||
|
@ -1429,6 +1427,29 @@ is the substring of
|
||||||
.Ar old_string
|
.Ar old_string
|
||||||
to be replaced in
|
to be replaced in
|
||||||
.Ar new_string .
|
.Ar new_string .
|
||||||
|
If only
|
||||||
|
.Ar old_string
|
||||||
|
contains the pattern matching character
|
||||||
|
.Ar % ,
|
||||||
|
and
|
||||||
|
.Ar old_string
|
||||||
|
matches, then the result is the
|
||||||
|
.Ar new_string .
|
||||||
|
If only the
|
||||||
|
.Ar new_string
|
||||||
|
contains the pattern matching character
|
||||||
|
.Ar % ,
|
||||||
|
then it is not treated specially and it is printed as a literal
|
||||||
|
.Ar %
|
||||||
|
on match.
|
||||||
|
If there is more than one pattern matching character
|
||||||
|
.Ar ( % )
|
||||||
|
in either the
|
||||||
|
.Ar new_string
|
||||||
|
or
|
||||||
|
.Ar old_string ,
|
||||||
|
only the first instance is treated specially (as the pattern character);
|
||||||
|
all subsequent instances are treated as regular characters
|
||||||
.Pp
|
.Pp
|
||||||
Variable expansion occurs in the normal fashion inside both
|
Variable expansion occurs in the normal fashion inside both
|
||||||
.Ar old_string
|
.Ar old_string
|
||||||
|
@ -1591,6 +1612,11 @@ then the words are output in reverse order.
|
||||||
For example,
|
For example,
|
||||||
.Ql Cm \&:[-1..1]
|
.Ql Cm \&:[-1..1]
|
||||||
selects all the words from last to first.
|
selects all the words from last to first.
|
||||||
|
If the list is already ordered, then this effectively reverses
|
||||||
|
the list, but it is more efficient to use
|
||||||
|
.Ql Cm \&:Or
|
||||||
|
instead of
|
||||||
|
.Ql Cm \&:O:[-1..1] .
|
||||||
.\" :[*]
|
.\" :[*]
|
||||||
.It Cm \&*
|
.It Cm \&*
|
||||||
Causes subsequent modifiers to treat the value as a single word
|
Causes subsequent modifiers to treat the value as a single word
|
||||||
|
@ -1623,9 +1649,9 @@ dot
|
||||||
.Pq Ql \&.
|
.Pq Ql \&.
|
||||||
character.
|
character.
|
||||||
Files are included with either
|
Files are included with either
|
||||||
.Cm \&.include Aq Ar file
|
.Cm \&.include \&< Ns Ar file Ns Cm \&>
|
||||||
or
|
or
|
||||||
.Cm \&.include Pf \*q Ar file Ns \*q .
|
.Cm \&.include \&\*q Ns Ar file Ns Cm \&\*q .
|
||||||
Variables between the angle brackets or double quotes are expanded
|
Variables between the angle brackets or double quotes are expanded
|
||||||
to form the file name.
|
to form the file name.
|
||||||
If angle brackets are used, the included makefile is expected to be in
|
If angle brackets are used, the included makefile is expected to be in
|
||||||
|
@ -2409,9 +2435,9 @@ file).
|
||||||
.Sh BUGS
|
.Sh BUGS
|
||||||
The
|
The
|
||||||
make
|
make
|
||||||
syntax is difficult to parse without actually acting of the data.
|
syntax is difficult to parse without actually acting on the data.
|
||||||
For instance finding the end of a variable use should involve scanning each
|
For instance, finding the end of a variable's use should involve scanning
|
||||||
the modifiers using the correct terminator for each field.
|
each of the modifiers, using the correct terminator for each field.
|
||||||
In many places
|
In many places
|
||||||
make
|
make
|
||||||
just counts {} and () in order to find the end of a variable expansion.
|
just counts {} and () in order to find the end of a variable expansion.
|
||||||
|
|
41
bmake.cat1
41
bmake.cat1
|
@ -779,8 +779,9 @@ BMAKE(1) FreeBSD General Commands Manual BMAKE(1)
|
||||||
This is identical to `[1m:M[22m', but selects all words which do not match
|
This is identical to `[1m:M[22m', but selects all words which do not match
|
||||||
[4mpattern[24m.
|
[4mpattern[24m.
|
||||||
|
|
||||||
[1m:O [22mOrder every word in variable alphabetically. To sort words in
|
[1m:O [22mOrder every word in variable alphabetically.
|
||||||
reverse order use the `[1m:O:[-1..1][22m' combination of modifiers.
|
|
||||||
|
[1m:Or [22mOrder every word in variable in reverse alphabetical order.
|
||||||
|
|
||||||
[1m:Ox [22mRandomize words in variable. The results will be different each
|
[1m:Ox [22mRandomize words in variable. The results will be different each
|
||||||
time you are referring to the modified variable; use the assignment
|
time you are referring to the modified variable; use the assignment
|
||||||
|
@ -803,7 +804,11 @@ BMAKE(1) FreeBSD General Commands Manual BMAKE(1)
|
||||||
due uno quattro tre
|
due uno quattro tre
|
||||||
|
|
||||||
[1m:Q [22mQuotes every shell meta-character in the variable, so that it can be
|
[1m:Q [22mQuotes every shell meta-character in the variable, so that it can be
|
||||||
passed safely through recursive invocations of [1mbmake[22m.
|
passed safely to the shell.
|
||||||
|
|
||||||
|
[1m:q [22mQuotes every shell meta-character in the variable, and also doubles
|
||||||
|
`$' characters so that it can be passed safely through recursive
|
||||||
|
invocations of [1mbmake[22m. This is equivalent to: `:S/\$/&&/g:Q'.
|
||||||
|
|
||||||
[1m:R [22mReplaces each word in the variable with everything but its suffix.
|
[1m:R [22mReplaces each word in the variable with everything but its suffix.
|
||||||
|
|
||||||
|
@ -903,7 +908,15 @@ BMAKE(1) FreeBSD General Commands Manual BMAKE(1)
|
||||||
contain the pattern matching character [4m%[24m then it is assumed that
|
contain the pattern matching character [4m%[24m then it is assumed that
|
||||||
they are anchored at the end of each word, so only suffixes or
|
they are anchored at the end of each word, so only suffixes or
|
||||||
entire words may be replaced. Otherwise [4m%[24m is the substring of
|
entire words may be replaced. Otherwise [4m%[24m is the substring of
|
||||||
[4mold_string[24m to be replaced in [4mnew_string[24m.
|
[4mold_string[24m to be replaced in [4mnew_string[24m. If only [4mold_string[24m con-
|
||||||
|
tains the pattern matching character [4m%[24m, and [4mold_string[24m matches, then
|
||||||
|
the result is the [4mnew_string[24m. If only the [4mnew_string[24m contains the
|
||||||
|
pattern matching character [4m%[24m, then it is not treated specially and
|
||||||
|
it is printed as a literal [4m%[24m on match. If there is more than one
|
||||||
|
pattern matching character ([4m%[24m) in either the [4mnew_string[24m or
|
||||||
|
[4mold_string[24m, only the first instance is treated specially (as the
|
||||||
|
pattern character); all subsequent instances are treated as regular
|
||||||
|
characters
|
||||||
|
|
||||||
Variable expansion occurs in the normal fashion inside both
|
Variable expansion occurs in the normal fashion inside both
|
||||||
[4mold_string[24m and [4mnew_string[24m with the single exception that a backslash
|
[4mold_string[24m and [4mnew_string[24m with the single exception that a backslash
|
||||||
|
@ -1003,7 +1016,9 @@ BMAKE(1) FreeBSD General Commands Manual BMAKE(1)
|
||||||
`[1m:[2..-1][22m' selects all words from the second word to the last
|
`[1m:[2..-1][22m' selects all words from the second word to the last
|
||||||
word. If [4mstart[24m is greater than [4mend[24m, then the words are out-
|
word. If [4mstart[24m is greater than [4mend[24m, then the words are out-
|
||||||
put in reverse order. For example, `[1m:[-1..1][22m' selects all
|
put in reverse order. For example, `[1m:[-1..1][22m' selects all
|
||||||
the words from last to first.
|
the words from last to first. If the list is already
|
||||||
|
ordered, then this effectively reverses the list, but it is
|
||||||
|
more efficient to use `[1m:Or[22m' instead of `[1m:O:[-1..1][22m'.
|
||||||
|
|
||||||
[1m* [22mCauses subsequent modifiers to treat the value as a single
|
[1m* [22mCauses subsequent modifiers to treat the value as a single
|
||||||
word (possibly containing embedded white space). Analogous
|
word (possibly containing embedded white space). Analogous
|
||||||
|
@ -1021,7 +1036,7 @@ BMAKE(1) FreeBSD General Commands Manual BMAKE(1)
|
||||||
Makefile inclusion, conditional structures and for loops reminiscent of
|
Makefile inclusion, conditional structures and for loops reminiscent of
|
||||||
the C programming language are provided in [1mbmake[22m. All such structures
|
the C programming language are provided in [1mbmake[22m. All such structures
|
||||||
are identified by a line beginning with a single dot (`.') character.
|
are identified by a line beginning with a single dot (`.') character.
|
||||||
Files are included with either [1m.include [22m<[4mfile[24m> or [1m.include [22m"[4mfile[24m". Vari-
|
Files are included with either [1m.include <[4m[22mfile[24m[1m> [22mor [1m.include "[4m[22mfile[24m[1m"[22m. Vari-
|
||||||
ables between the angle brackets or double quotes are expanded to form
|
ables between the angle brackets or double quotes are expanded to form
|
||||||
the file name. If angle brackets are used, the included makefile is
|
the file name. If angle brackets are used, the included makefile is
|
||||||
expected to be in the system makefile directory. If double quotes are
|
expected to be in the system makefile directory. If double quotes are
|
||||||
|
@ -1184,7 +1199,7 @@ BMAKE(1) FreeBSD General Commands Manual BMAKE(1)
|
||||||
the ``make'' or ``defined'' expression is applied to it, depending on the
|
the ``make'' or ``defined'' expression is applied to it, depending on the
|
||||||
form of the conditional. If the form is `[1m.ifdef[22m', `[1m.ifndef[22m', or `[1m.if[22m'
|
form of the conditional. If the form is `[1m.ifdef[22m', `[1m.ifndef[22m', or `[1m.if[22m'
|
||||||
the ``defined'' expression is applied. Similarly, if the form is
|
the ``defined'' expression is applied. Similarly, if the form is
|
||||||
`[1m.ifmake[22m' or `[1m.ifnmake[22m, [1mthe[22m' ``make'' expression is applied.
|
`[1m.ifmake[22m' or `[1m.ifnmake[22m', the ``make'' expression is applied.
|
||||||
|
|
||||||
If the conditional evaluates to true the parsing of the makefile contin-
|
If the conditional evaluates to true the parsing of the makefile contin-
|
||||||
ues as before. If it evaluates to false, the following lines are
|
ues as before. If it evaluates to false, the following lines are
|
||||||
|
@ -1533,12 +1548,12 @@ BMAKE(1) FreeBSD General Commands Manual BMAKE(1)
|
||||||
creates an ``FRC'' file).
|
creates an ``FRC'' file).
|
||||||
|
|
||||||
[1mBUGS[0m
|
[1mBUGS[0m
|
||||||
The make syntax is difficult to parse without actually acting of the
|
The make syntax is difficult to parse without actually acting on the
|
||||||
data. For instance finding the end of a variable use should involve
|
data. For instance, finding the end of a variable's use should involve
|
||||||
scanning each the modifiers using the correct terminator for each field.
|
scanning each of the modifiers, using the correct terminator for each
|
||||||
In many places make just counts {} and () in order to find the end of a
|
field. In many places make just counts {} and () in order to find the
|
||||||
variable expansion.
|
end of a variable expansion.
|
||||||
|
|
||||||
There is no way of escaping a space character in a filename.
|
There is no way of escaping a space character in a filename.
|
||||||
|
|
||||||
FreeBSD 11.1 June 22, 2017 FreeBSD 11.1
|
FreeBSD 11.3 June 5, 2020 FreeBSD 11.3
|
||||||
|
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 79 KiB |
221
configure
vendored
221
configure
vendored
|
@ -1,6 +1,6 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.69 for bmake 20200418.
|
# Generated by GNU Autoconf 2.69 for bmake 20200524.
|
||||||
#
|
#
|
||||||
# Report bugs to <sjg@NetBSD.org>.
|
# Report bugs to <sjg@NetBSD.org>.
|
||||||
#
|
#
|
||||||
|
@ -580,8 +580,8 @@ MAKEFLAGS=
|
||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='bmake'
|
PACKAGE_NAME='bmake'
|
||||||
PACKAGE_TARNAME='bmake'
|
PACKAGE_TARNAME='bmake'
|
||||||
PACKAGE_VERSION='20200418'
|
PACKAGE_VERSION='20200524'
|
||||||
PACKAGE_STRING='bmake 20200418'
|
PACKAGE_STRING='bmake 20200524'
|
||||||
PACKAGE_BUGREPORT='sjg@NetBSD.org'
|
PACKAGE_BUGREPORT='sjg@NetBSD.org'
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
|
@ -1254,7 +1254,7 @@ if test "$ac_init_help" = "long"; then
|
||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures bmake 20200418 to adapt to many kinds of systems.
|
\`configure' configures bmake 20200524 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
|
@ -1315,7 +1315,7 @@ fi
|
||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of bmake 20200418:";;
|
short | recursive ) echo "Configuration of bmake 20200524:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
|
@ -1421,7 +1421,7 @@ fi
|
||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
bmake configure 20200418
|
bmake configure 20200524
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
|
@ -2001,7 +2001,7 @@ cat >config.log <<_ACEOF
|
||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by bmake $as_me 20200418, which was
|
It was created by bmake $as_me 20200524, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
|
@ -2409,6 +2409,10 @@ if test "${with_filemon+set}" = set; then :
|
||||||
*/filemon*) filemon_h="${withval}/filemon.h";;
|
*/filemon*) filemon_h="${withval}/filemon.h";;
|
||||||
*) as_fn_error $? "bad value ${withval} given for filemon" "$LINENO" 5 ;;
|
*) as_fn_error $? "bad value ${withval} given for filemon" "$LINENO" 5 ;;
|
||||||
esac
|
esac
|
||||||
|
case "$use_filemon,$filemon_h" in
|
||||||
|
,*.h) use_filemon=dev;;
|
||||||
|
esac
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
case "$OS" in
|
case "$OS" in
|
||||||
|
@ -4228,47 +4232,182 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
|
||||||
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
|
||||||
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
ac_compiler_gnu=$ac_cv_c_compiler_gnu
|
||||||
|
|
||||||
if test $ac_cv_c_compiler_gnu = yes; then
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5
|
$as_echo_n "checking for $CC option to accept ISO C99... " >&6; }
|
||||||
$as_echo_n "checking whether $CC needs -traditional... " >&6; }
|
if ${ac_cv_prog_cc_c99+:} false; then :
|
||||||
if ${ac_cv_prog_gcc_traditional+:} false; then :
|
|
||||||
$as_echo_n "(cached) " >&6
|
$as_echo_n "(cached) " >&6
|
||||||
else
|
else
|
||||||
ac_pattern="Autoconf.*'x'"
|
ac_cv_prog_cc_c99=no
|
||||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
ac_save_CC=$CC
|
||||||
|
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||||
/* end confdefs.h. */
|
/* end confdefs.h. */
|
||||||
#include <sgtty.h>
|
#include <stdarg.h>
|
||||||
Autoconf TIOCGETP
|
#include <stdbool.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <wchar.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
// Check varargs macros. These examples are taken from C99 6.10.3.5.
|
||||||
|
#define debug(...) fprintf (stderr, __VA_ARGS__)
|
||||||
|
#define showlist(...) puts (#__VA_ARGS__)
|
||||||
|
#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__))
|
||||||
|
static void
|
||||||
|
test_varargs_macros (void)
|
||||||
|
{
|
||||||
|
int x = 1234;
|
||||||
|
int y = 5678;
|
||||||
|
debug ("Flag");
|
||||||
|
debug ("X = %d\n", x);
|
||||||
|
showlist (The first, second, and third items.);
|
||||||
|
report (x>y, "x is %d but y is %d", x, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check long long types.
|
||||||
|
#define BIG64 18446744073709551615ull
|
||||||
|
#define BIG32 4294967295ul
|
||||||
|
#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0)
|
||||||
|
#if !BIG_OK
|
||||||
|
your preprocessor is broken;
|
||||||
|
#endif
|
||||||
|
#if BIG_OK
|
||||||
|
#else
|
||||||
|
your preprocessor is broken;
|
||||||
|
#endif
|
||||||
|
static long long int bignum = -9223372036854775807LL;
|
||||||
|
static unsigned long long int ubignum = BIG64;
|
||||||
|
|
||||||
|
struct incomplete_array
|
||||||
|
{
|
||||||
|
int datasize;
|
||||||
|
double data[];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct named_init {
|
||||||
|
int number;
|
||||||
|
const wchar_t *name;
|
||||||
|
double average;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef const char *ccp;
|
||||||
|
|
||||||
|
static inline int
|
||||||
|
test_restrict (ccp restrict text)
|
||||||
|
{
|
||||||
|
// See if C++-style comments work.
|
||||||
|
// Iterate through items via the restricted pointer.
|
||||||
|
// Also check for declarations in for loops.
|
||||||
|
for (unsigned int i = 0; *(text+i) != '\0'; ++i)
|
||||||
|
continue;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check varargs and va_copy.
|
||||||
|
static void
|
||||||
|
test_varargs (const char *format, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start (args, format);
|
||||||
|
va_list args_copy;
|
||||||
|
va_copy (args_copy, args);
|
||||||
|
|
||||||
|
const char *str;
|
||||||
|
int number;
|
||||||
|
float fnumber;
|
||||||
|
|
||||||
|
while (*format)
|
||||||
|
{
|
||||||
|
switch (*format++)
|
||||||
|
{
|
||||||
|
case 's': // string
|
||||||
|
str = va_arg (args_copy, const char *);
|
||||||
|
break;
|
||||||
|
case 'd': // int
|
||||||
|
number = va_arg (args_copy, int);
|
||||||
|
break;
|
||||||
|
case 'f': // float
|
||||||
|
fnumber = va_arg (args_copy, double);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
va_end (args_copy);
|
||||||
|
va_end (args);
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
|
||||||
|
// Check bool.
|
||||||
|
_Bool success = false;
|
||||||
|
|
||||||
|
// Check restrict.
|
||||||
|
if (test_restrict ("String literal") == 0)
|
||||||
|
success = true;
|
||||||
|
char *restrict newvar = "Another string";
|
||||||
|
|
||||||
|
// Check varargs.
|
||||||
|
test_varargs ("s, d' f .", "string", 65, 34.234);
|
||||||
|
test_varargs_macros ();
|
||||||
|
|
||||||
|
// Check flexible array members.
|
||||||
|
struct incomplete_array *ia =
|
||||||
|
malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10));
|
||||||
|
ia->datasize = 10;
|
||||||
|
for (int i = 0; i < ia->datasize; ++i)
|
||||||
|
ia->data[i] = i * 1.234;
|
||||||
|
|
||||||
|
// Check named initializers.
|
||||||
|
struct named_init ni = {
|
||||||
|
.number = 34,
|
||||||
|
.name = L"Test wide string",
|
||||||
|
.average = 543.34343,
|
||||||
|
};
|
||||||
|
|
||||||
|
ni.number = 58;
|
||||||
|
|
||||||
|
int dynamic_array[ni.number];
|
||||||
|
dynamic_array[ni.number - 1] = 543;
|
||||||
|
|
||||||
|
// work around unused variable warnings
|
||||||
|
return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x'
|
||||||
|
|| dynamic_array[ni.number - 1] != 543);
|
||||||
|
|
||||||
|
;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
_ACEOF
|
_ACEOF
|
||||||
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
|
for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99
|
||||||
$EGREP "$ac_pattern" >/dev/null 2>&1; then :
|
do
|
||||||
ac_cv_prog_gcc_traditional=yes
|
CC="$ac_save_CC $ac_arg"
|
||||||
else
|
if ac_fn_c_try_compile "$LINENO"; then :
|
||||||
ac_cv_prog_gcc_traditional=no
|
ac_cv_prog_cc_c99=$ac_arg
|
||||||
fi
|
fi
|
||||||
rm -f conftest*
|
rm -f core conftest.err conftest.$ac_objext
|
||||||
|
test "x$ac_cv_prog_cc_c99" != "xno" && break
|
||||||
|
done
|
||||||
|
rm -f conftest.$ac_ext
|
||||||
|
CC=$ac_save_CC
|
||||||
|
|
||||||
|
fi
|
||||||
|
# AC_CACHE_VAL
|
||||||
|
case "x$ac_cv_prog_cc_c99" in
|
||||||
|
x)
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
|
||||||
|
$as_echo "none needed" >&6; } ;;
|
||||||
|
xno)
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
|
||||||
|
$as_echo "unsupported" >&6; } ;;
|
||||||
|
*)
|
||||||
|
CC="$CC $ac_cv_prog_cc_c99"
|
||||||
|
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5
|
||||||
|
$as_echo "$ac_cv_prog_cc_c99" >&6; } ;;
|
||||||
|
esac
|
||||||
|
if test "x$ac_cv_prog_cc_c99" != xno; then :
|
||||||
|
|
||||||
if test $ac_cv_prog_gcc_traditional = no; then
|
|
||||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
|
||||||
/* end confdefs.h. */
|
|
||||||
#include <termio.h>
|
|
||||||
Autoconf TCGETA
|
|
||||||
_ACEOF
|
|
||||||
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
|
|
||||||
$EGREP "$ac_pattern" >/dev/null 2>&1; then :
|
|
||||||
ac_cv_prog_gcc_traditional=yes
|
|
||||||
fi
|
fi
|
||||||
rm -f conftest*
|
|
||||||
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5
|
|
||||||
$as_echo "$ac_cv_prog_gcc_traditional" >&6; }
|
|
||||||
if test $ac_cv_prog_gcc_traditional = yes; then
|
|
||||||
CC="$CC -traditional"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
ac_aux_dir=
|
ac_aux_dir=
|
||||||
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
|
for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do
|
||||||
|
@ -6639,7 +6778,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by bmake $as_me 20200418, which was
|
This file was extended by bmake $as_me 20200524, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
|
@ -6701,7 +6840,7 @@ _ACEOF
|
||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
bmake config.status 20200418
|
bmake config.status 20200524
|
||||||
configured by $0, generated by GNU Autoconf 2.69,
|
configured by $0, generated by GNU Autoconf 2.69,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
|
13
configure.in
13
configure.in
|
@ -1,11 +1,11 @@
|
||||||
dnl
|
dnl
|
||||||
dnl RCSid:
|
dnl RCSid:
|
||||||
dnl $Id: configure.in,v 1.63 2020/04/19 05:17:57 sjg Exp $
|
dnl $Id: configure.in,v 1.65 2020/05/25 01:11:40 sjg Exp $
|
||||||
dnl
|
dnl
|
||||||
dnl Process this file with autoconf to produce a configure script
|
dnl Process this file with autoconf to produce a configure script
|
||||||
dnl
|
dnl
|
||||||
AC_PREREQ(2.50)
|
AC_PREREQ(2.50)
|
||||||
AC_INIT([bmake], [20200418], [sjg@NetBSD.org])
|
AC_INIT([bmake], [20200524], [sjg@NetBSD.org])
|
||||||
AC_CONFIG_HEADERS(config.h)
|
AC_CONFIG_HEADERS(config.h)
|
||||||
|
|
||||||
dnl make srcdir absolute
|
dnl make srcdir absolute
|
||||||
|
@ -60,7 +60,11 @@ AC_ARG_WITH(filemon,
|
||||||
*/filemon.h) filemon_h="${withval}";;
|
*/filemon.h) filemon_h="${withval}";;
|
||||||
*/filemon*) filemon_h="${withval}/filemon.h";;
|
*/filemon*) filemon_h="${withval}/filemon.h";;
|
||||||
*) AC_MSG_ERROR(bad value ${withval} given for filemon) ;;
|
*) AC_MSG_ERROR(bad value ${withval} given for filemon) ;;
|
||||||
esac],
|
esac
|
||||||
|
case "$use_filemon,$filemon_h" in
|
||||||
|
,*.h) use_filemon=dev;;
|
||||||
|
esac
|
||||||
|
],
|
||||||
[
|
[
|
||||||
case "$OS" in
|
case "$OS" in
|
||||||
NetBSD) filemon_h=no use_filemon=ktrace;;
|
NetBSD) filemon_h=no use_filemon=ktrace;;
|
||||||
|
@ -100,7 +104,8 @@ dnl see _EXTENSIONS_ we use it.
|
||||||
AC_USE_SYSTEM_EXTENSIONS
|
AC_USE_SYSTEM_EXTENSIONS
|
||||||
dnl Checks for programs.
|
dnl Checks for programs.
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
AC_PROG_GCC_TRADITIONAL
|
AC_PROG_CC_C99
|
||||||
|
dnl AC_PROG_GCC_TRADITIONAL
|
||||||
AC_PROG_INSTALL
|
AC_PROG_INSTALL
|
||||||
dnl Executable suffix - normally empty; .exe on os2.
|
dnl Executable suffix - normally empty; .exe on os2.
|
||||||
AC_SUBST(ac_exe_suffix)dnl
|
AC_SUBST(ac_exe_suffix)dnl
|
||||||
|
|
21
dir.c
21
dir.c
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: dir.c,v 1.73 2018/07/12 18:03:31 christos Exp $ */
|
/* $NetBSD: dir.c,v 1.74 2020/06/05 18:03:59 sjg 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.73 2018/07/12 18:03:31 christos Exp $";
|
static char rcsid[] = "$NetBSD: dir.c,v 1.74 2020/06/05 18:03:59 sjg 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.73 2018/07/12 18:03:31 christos Exp $");
|
__RCSID("$NetBSD: dir.c,v 1.74 2020/06/05 18:03:59 sjg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
|
@ -263,7 +263,8 @@ static char *DirLookupAbs(Path *, const char *, const char *);
|
||||||
* mtime and mode are all we care about.
|
* mtime and mode are all we care about.
|
||||||
*/
|
*/
|
||||||
struct cache_st {
|
struct cache_st {
|
||||||
time_t mtime;
|
time_t lmtime; /* lstat */
|
||||||
|
time_t mtime; /* stat */
|
||||||
mode_t mode;
|
mode_t mode;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -287,14 +288,16 @@ cached_stats(Hash_Table *htp, const char *pathname, struct stat *st, int flags)
|
||||||
cst = entry->clientPtr;
|
cst = entry->clientPtr;
|
||||||
|
|
||||||
memset(st, 0, sizeof(*st));
|
memset(st, 0, sizeof(*st));
|
||||||
st->st_mtime = cst->mtime;
|
|
||||||
st->st_mode = cst->mode;
|
st->st_mode = cst->mode;
|
||||||
|
st->st_mtime = (flags & CST_LSTAT) ? cst->lmtime : cst->mtime;
|
||||||
|
if (st->st_mtime) {
|
||||||
if (DEBUG(DIR)) {
|
if (DEBUG(DIR)) {
|
||||||
fprintf(debug_file, "Using cached time %s for %s\n",
|
fprintf(debug_file, "Using cached time %s for %s\n",
|
||||||
Targ_FmtTime(st->st_mtime), pathname);
|
Targ_FmtTime(st->st_mtime), pathname);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
rc = (flags & CST_LSTAT) ? lstat(pathname, st) : stat(pathname, st);
|
rc = (flags & CST_LSTAT) ? lstat(pathname, st) : stat(pathname, st);
|
||||||
if (rc == -1)
|
if (rc == -1)
|
||||||
|
@ -305,10 +308,16 @@ cached_stats(Hash_Table *htp, const char *pathname, struct stat *st, int flags)
|
||||||
|
|
||||||
if (!entry)
|
if (!entry)
|
||||||
entry = Hash_CreateEntry(htp, pathname, NULL);
|
entry = Hash_CreateEntry(htp, pathname, NULL);
|
||||||
if (!entry->clientPtr)
|
if (!entry->clientPtr) {
|
||||||
entry->clientPtr = bmake_malloc(sizeof(*cst));
|
entry->clientPtr = bmake_malloc(sizeof(*cst));
|
||||||
|
memset(entry->clientPtr, 0, sizeof(*cst));
|
||||||
|
}
|
||||||
cst = entry->clientPtr;
|
cst = entry->clientPtr;
|
||||||
|
if ((flags & CST_LSTAT)) {
|
||||||
|
cst->lmtime = st->st_mtime;
|
||||||
|
} else {
|
||||||
cst->mtime = st->st_mtime;
|
cst->mtime = st->st_mtime;
|
||||||
|
}
|
||||||
cst->mode = st->st_mode;
|
cst->mode = st->st_mode;
|
||||||
if (DEBUG(DIR)) {
|
if (DEBUG(DIR)) {
|
||||||
fprintf(debug_file, " Caching %s for %s\n",
|
fprintf(debug_file, " Caching %s for %s\n",
|
||||||
|
|
|
@ -39,7 +39,6 @@
|
||||||
__RCSID("$NetBSD: dirname.c,v 1.14 2018/09/27 00:45:34 kre Exp $");
|
__RCSID("$NetBSD: dirname.c,v 1.14 2018/09/27 00:45:34 kre Exp $");
|
||||||
#endif /* !LIBC_SCCS && !lint */
|
#endif /* !LIBC_SCCS && !lint */
|
||||||
|
|
||||||
#include "namespace.h"
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#ifdef HAVE_LIBGEN_H
|
#ifdef HAVE_LIBGEN_H
|
||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
|
|
15
make.1
15
make.1
|
@ -1,4 +1,4 @@
|
||||||
.\" $NetBSD: make.1,v 1.280 2020/04/27 20:03:08 christos Exp $
|
.\" $NetBSD: make.1,v 1.282 2020/06/06 20:28:42 wiz Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright (c) 1990, 1993
|
.\" Copyright (c) 1990, 1993
|
||||||
.\" The Regents of the University of California. All rights reserved.
|
.\" The Regents of the University of California. All rights reserved.
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
.\"
|
.\"
|
||||||
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
|
.\" from: @(#)make.1 8.4 (Berkeley) 3/19/94
|
||||||
.\"
|
.\"
|
||||||
.Dd April 27, 2020
|
.Dd June 5, 2020
|
||||||
.Dt MAKE 1
|
.Dt MAKE 1
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
|
@ -1196,10 +1196,8 @@ but selects all words which do not match
|
||||||
.Ar pattern .
|
.Ar pattern .
|
||||||
.It Cm \&:O
|
.It Cm \&:O
|
||||||
Order every word in variable alphabetically.
|
Order every word in variable alphabetically.
|
||||||
To sort words in
|
.It Cm \&:Or
|
||||||
reverse order use the
|
Order every word in variable in reverse alphabetical order.
|
||||||
.Ql Cm \&:O:[-1..1]
|
|
||||||
combination of modifiers.
|
|
||||||
.It Cm \&:Ox
|
.It Cm \&:Ox
|
||||||
Randomize words in variable.
|
Randomize words in variable.
|
||||||
The results will be different each time you are referring to the
|
The results will be different each time you are referring to the
|
||||||
|
@ -1614,6 +1612,11 @@ then the words are output in reverse order.
|
||||||
For example,
|
For example,
|
||||||
.Ql Cm \&:[-1..1]
|
.Ql Cm \&:[-1..1]
|
||||||
selects all the words from last to first.
|
selects all the words from last to first.
|
||||||
|
If the list is already ordered, then this effectively reverses
|
||||||
|
the list, but it is more efficient to use
|
||||||
|
.Ql Cm \&:Or
|
||||||
|
instead of
|
||||||
|
.Ql Cm \&:O:[-1..1] .
|
||||||
.\" :[*]
|
.\" :[*]
|
||||||
.It Cm \&*
|
.It Cm \&*
|
||||||
Causes subsequent modifiers to treat the value as a single word
|
Causes subsequent modifiers to treat the value as a single word
|
||||||
|
|
17
mk/ChangeLog
17
mk/ChangeLog
|
@ -1,3 +1,20 @@
|
||||||
|
2020-06-06 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* install-mk (MK_VERSION): 20200606
|
||||||
|
|
||||||
|
* dirdeps-targets.mk: allow for filtering of .TARGETS
|
||||||
|
|
||||||
|
* meta2deps.py: fix bug in processing 'L'ink and 'M'ove
|
||||||
|
entries - and we don't care about 'W'rite entries.
|
||||||
|
Also ignore absolute paths that do not exist.
|
||||||
|
|
||||||
|
2020-05-25 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
|
* install-mk (MK_VERSION): 20200525
|
||||||
|
|
||||||
|
* init.mk: expand and simplify handling of qualified vars
|
||||||
|
like CPPFLAGS.${.TARGET:T}
|
||||||
|
|
||||||
2020-05-15 Simon J Gerraty <sjg@beast.crufty.net>
|
2020-05-15 Simon J Gerraty <sjg@beast.crufty.net>
|
||||||
|
|
||||||
* install-mk (MK_VERSION): 20200515
|
* install-mk (MK_VERSION): 20200515
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# RCSid:
|
# RCSid:
|
||||||
# $Id: dirdeps-targets.mk,v 1.9 2019/10/06 20:07:50 sjg Exp $
|
# $Id: dirdeps-targets.mk,v 1.10 2020/06/06 22:41:02 sjg Exp $
|
||||||
#
|
#
|
||||||
# @(#) Copyright (c) 2019 Simon J. Gerraty
|
# @(#) Copyright (c) 2019-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.
|
||||||
|
@ -37,8 +37,11 @@ DIRDEPS_TARGETS_DIRS ?= targets targets/pseudo
|
||||||
# they need to be stripped when looking for target dirs
|
# they need to be stripped when looking for target dirs
|
||||||
DIRDEPS_TARGETS_PREFIX_LIST ?= pkg- build-
|
DIRDEPS_TARGETS_PREFIX_LIST ?= pkg- build-
|
||||||
|
|
||||||
|
# some .TARGETS need filtering
|
||||||
|
DIRDEPS_TARGETS_FILTER += Nall
|
||||||
|
|
||||||
# matching target dirs if any
|
# matching target dirs if any
|
||||||
tdirs := ${.TARGETS:Nall:${DIRDEPS_TARGETS_PREFIX_LIST:@p@S,^$p,,@:ts:}:@t@${DIRDEPS_TARGETS_DIRS:@d@$d/$t@}@:@d@${exists(${SRCTOP}/$d):?$d:}@}
|
tdirs := ${.TARGETS:${DIRDEPS_TARGETS_FILTER:ts:}:${DIRDEPS_TARGETS_PREFIX_LIST:@p@S,^$p,,@:ts:}:@t@${DIRDEPS_TARGETS_DIRS:@d@$d/$t@}@:@d@${exists(${SRCTOP}/$d):?$d:}@}
|
||||||
|
|
||||||
.if !empty(DEBUG_DIRDEPS_TARGETS)
|
.if !empty(DEBUG_DIRDEPS_TARGETS)
|
||||||
.info tdirs=${tdirs}
|
.info tdirs=${tdirs}
|
||||||
|
|
25
mk/init.mk
25
mk/init.mk
|
@ -1,4 +1,4 @@
|
||||||
# $Id: init.mk,v 1.16 2019/09/28 16:54:02 sjg Exp $
|
# $Id: init.mk,v 1.17 2020/05/25 20:15:07 sjg Exp $
|
||||||
#
|
#
|
||||||
# @(#) Copyright (c) 2002, Simon J. Gerraty
|
# @(#) Copyright (c) 2002, Simon J. Gerraty
|
||||||
#
|
#
|
||||||
|
@ -36,8 +36,27 @@ CXX_SUFFIXES?= .cc .cpp .cxx .C
|
||||||
.include <warnings.mk>
|
.include <warnings.mk>
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
.for x in COPTS CPPFLAGS CPUFLAGS LDFLAGS
|
# these are applied in order, least specific to most
|
||||||
$x += ${$x.${COMPILER_TYPE}:U} ${$x.${.IMPSRC:T}:U}
|
VAR_QUALIFIER_LIST += \
|
||||||
|
${TARGET_SPEC_VARS:UMACHINE:@v@${$v}@} \
|
||||||
|
${COMPILER_TYPE} \
|
||||||
|
${.TARGET:T:R} \
|
||||||
|
${.TARGET:T} \
|
||||||
|
${.IMPSRC:T} \
|
||||||
|
${VAR_QUALIFIER_XTRA_LIST}
|
||||||
|
|
||||||
|
QUALIFIED_VAR_LIST += \
|
||||||
|
CFLAGS \
|
||||||
|
COPTS \
|
||||||
|
CPPFLAGS \
|
||||||
|
CPUFLAGS \
|
||||||
|
LDFLAGS \
|
||||||
|
|
||||||
|
# a final :U avoids errors if someone uses :=
|
||||||
|
.for V in ${QUALIFIED_VAR_LIST:O:u:@q@$q $q_LAST@}
|
||||||
|
.for Q in ${VAR_QUALIFIER_LIST:u}
|
||||||
|
$V += ${$V.$Q:U} ${$V.$Q.${COMPILER_TYPE}:U}
|
||||||
|
.endfor
|
||||||
.endfor
|
.endfor
|
||||||
|
|
||||||
CC_PG?= -pg
|
CC_PG?= -pg
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
# Simon J. Gerraty <sjg@crufty.net>
|
# Simon J. Gerraty <sjg@crufty.net>
|
||||||
|
|
||||||
# RCSid:
|
# RCSid:
|
||||||
# $Id: install-mk,v 1.170 2020/05/15 21:40:24 sjg Exp $
|
# $Id: install-mk,v 1.172 2020/06/06 22:41:15 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=20200515
|
MK_VERSION=20200606
|
||||||
OWNER=
|
OWNER=
|
||||||
GROUP=
|
GROUP=
|
||||||
MODE=444
|
MODE=444
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
|
|
||||||
"""
|
"""
|
||||||
RCSid:
|
RCSid:
|
||||||
$Id: meta2deps.py,v 1.28 2020/05/16 23:21:48 sjg Exp $
|
$Id: meta2deps.py,v 1.30 2020/06/08 23:05:00 sjg Exp $
|
||||||
|
|
||||||
Copyright (c) 2011-2019, Simon J. Gerraty
|
Copyright (c) 2011-2019, Simon J. Gerraty
|
||||||
Copyright (c) 2011-2017, Juniper Networks, Inc.
|
Copyright (c) 2011-2017, Juniper Networks, Inc.
|
||||||
|
@ -81,7 +81,11 @@ def resolve(path, cwd, last_dir=None, debug=0, debug_out=sys.stderr):
|
||||||
if path.endswith('/.'):
|
if path.endswith('/.'):
|
||||||
path = path[0:-2]
|
path = path[0:-2]
|
||||||
if len(path) > 0 and path[0] == '/':
|
if len(path) > 0 and path[0] == '/':
|
||||||
|
if os.path.exists(path):
|
||||||
return path
|
return path
|
||||||
|
if debug > 2:
|
||||||
|
print("skipping non-existent:", path, file=debug_out)
|
||||||
|
return None
|
||||||
if path == '.':
|
if path == '.':
|
||||||
return cwd
|
return cwd
|
||||||
if path.startswith('./'):
|
if path.startswith('./'):
|
||||||
|
@ -139,6 +143,8 @@ def abspath(path, cwd, last_dir=None, debug=0, debug_out=sys.stderr):
|
||||||
rpath = resolve(path, cwd, last_dir, debug, debug_out)
|
rpath = resolve(path, cwd, last_dir, debug, debug_out)
|
||||||
if rpath:
|
if rpath:
|
||||||
path = rpath
|
path = rpath
|
||||||
|
elif len(path) > 0 and path[0] == '/':
|
||||||
|
return None
|
||||||
if (path.find('/') < 0 or
|
if (path.find('/') < 0 or
|
||||||
path.find('./') > 0 or
|
path.find('./') > 0 or
|
||||||
path.endswith('/..')):
|
path.endswith('/..')):
|
||||||
|
@ -475,6 +481,10 @@ def parse(self, name=None, file=None):
|
||||||
continue
|
continue
|
||||||
elif w[0] == 'C':
|
elif w[0] == 'C':
|
||||||
cwd = abspath(w[2], cwd, None, self.debug, self.debug_out)
|
cwd = abspath(w[2], cwd, None, self.debug, self.debug_out)
|
||||||
|
if not cwd:
|
||||||
|
cwd = w[2]
|
||||||
|
if self.debug > 1:
|
||||||
|
print("missing cwd=", cwd, file=self.debug_out)
|
||||||
if cwd.endswith('/.'):
|
if cwd.endswith('/.'):
|
||||||
cwd = cwd[0:-2]
|
cwd = cwd[0:-2]
|
||||||
self.last_dir = pid_last_dir[pid] = cwd
|
self.last_dir = pid_last_dir[pid] = cwd
|
||||||
|
@ -491,8 +501,8 @@ def parse(self, name=None, file=None):
|
||||||
if w[0] in 'ML':
|
if w[0] in 'ML':
|
||||||
# these are special, tread src as read and
|
# these are special, tread src as read and
|
||||||
# target as write
|
# target as write
|
||||||
self.parse_path(w[1].strip("'"), cwd, 'R', w)
|
self.parse_path(w[2].strip("'"), cwd, 'R', w)
|
||||||
self.parse_path(w[2].strip("'"), cwd, 'W', w)
|
self.parse_path(w[3].strip("'"), cwd, 'W', w)
|
||||||
continue
|
continue
|
||||||
elif w[0] in 'ERWS':
|
elif w[0] in 'ERWS':
|
||||||
path = w[2]
|
path = w[2]
|
||||||
|
@ -563,7 +573,7 @@ def parse_path(self, path, cwd, op=None, w=[]):
|
||||||
print("ldir=", self.last_dir, file=self.debug_out)
|
print("ldir=", self.last_dir, file=self.debug_out)
|
||||||
return
|
return
|
||||||
|
|
||||||
if op in 'ERW':
|
if op in 'ER':
|
||||||
# finally, we get down to it
|
# finally, we get down to it
|
||||||
if dir == self.cwd or dir == self.curdir:
|
if dir == self.cwd or dir == self.curdir:
|
||||||
return
|
return
|
||||||
|
|
18
var.c
18
var.c
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: var.c,v 1.223 2020/04/25 18:20:57 christos Exp $ */
|
/* $NetBSD: var.c,v 1.224 2020/06/05 19:20:46 sjg 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: var.c,v 1.223 2020/04/25 18:20:57 christos Exp $";
|
static char rcsid[] = "$NetBSD: var.c,v 1.224 2020/06/05 19:20:46 sjg Exp $";
|
||||||
#else
|
#else
|
||||||
#include <sys/cdefs.h>
|
#include <sys/cdefs.h>
|
||||||
#ifndef lint
|
#ifndef lint
|
||||||
#if 0
|
#if 0
|
||||||
static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94";
|
static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94";
|
||||||
#else
|
#else
|
||||||
__RCSID("$NetBSD: var.c,v 1.223 2020/04/25 18:20:57 christos Exp $");
|
__RCSID("$NetBSD: var.c,v 1.224 2020/06/05 19:20:46 sjg Exp $");
|
||||||
#endif
|
#endif
|
||||||
#endif /* not lint */
|
#endif /* not lint */
|
||||||
#endif
|
#endif
|
||||||
|
@ -2027,6 +2027,13 @@ VarWordCompare(const void *a, const void *b)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
VarWordCompareReverse(const void *a, const void *b)
|
||||||
|
{
|
||||||
|
int r = strcmp(*(const char * const *)b, *(const char * const *)a);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
/*-
|
/*-
|
||||||
*-----------------------------------------------------------------------
|
*-----------------------------------------------------------------------
|
||||||
* VarOrder --
|
* VarOrder --
|
||||||
|
@ -2058,6 +2065,9 @@ VarOrder(const char *str, const char otype)
|
||||||
|
|
||||||
if (ac > 0)
|
if (ac > 0)
|
||||||
switch (otype) {
|
switch (otype) {
|
||||||
|
case 'r': /* reverse sort alphabetically */
|
||||||
|
qsort(av, ac, sizeof(char *), VarWordCompareReverse);
|
||||||
|
break;
|
||||||
case 's': /* sort alphabetically */
|
case 's': /* sort alphabetically */
|
||||||
qsort(av, ac, sizeof(char *), VarWordCompare);
|
qsort(av, ac, sizeof(char *), VarWordCompare);
|
||||||
break;
|
break;
|
||||||
|
@ -3562,7 +3572,7 @@ ApplyModifiers(char *nstr, const char *tstr,
|
||||||
if (tstr[1] == endc || tstr[1] == ':') {
|
if (tstr[1] == endc || tstr[1] == ':') {
|
||||||
otype = 's';
|
otype = 's';
|
||||||
termc = *cp;
|
termc = *cp;
|
||||||
} else if ( (tstr[1] == 'x') &&
|
} else if ( (tstr[1] == 'r' || tstr[1] == 'x') &&
|
||||||
(tstr[2] == endc || tstr[2] == ':') ) {
|
(tstr[2] == endc || tstr[2] == ':') ) {
|
||||||
otype = tstr[1];
|
otype = tstr[1];
|
||||||
cp = tstr + 2;
|
cp = tstr + 2;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user