Import bmake-20251111

Intersting/relevant changes since bmake-20250804

ChangeLog since bmake-20250804

2025-11-15  Simon J Gerraty  <sjg@beast.crufty.net>

	* boot-strap: unset more things from env and save a copy
	to env.out for debugging.

2025-11-12  Simon J Gerraty  <sjg@beast.crufty.net>

	* VERSION (_MAKE_VERSION): 20251111
	Merge with NetBSD make, pick up
	o var.c: add :sh1 which only evaluates command on first reference.

2025-11-11  Simon J Gerraty  <sjg@beast.crufty.net>

	* configure.in: Force filemon=no for Cygwin and MINGW64_NT

2025-11-10  Simon J Gerraty  <sjg@beast.crufty.net>

	* unit-tests/Makefile: handle MINGW64_NT
	mark some tests broken, filter others as per Cygwin.

2025-10-23  Simon J Gerraty  <sjg@beast.crufty.net>

	* make.1: document MAKE_VERSION.

2025-10-22  Simon J Gerraty  <sjg@beast.crufty.net>

	* VERSION (_MAKE_VERSION): 20251022

	* configure.in: Add a check that lua is version 5.2 or later
	if not we want to skip running check-expect.lua

2025-09-16  Simon J Gerraty  <sjg@beast.crufty.net>

	* VERSION (_MAKE_VERSION): 20250916
	Merge with NetBSD make, pick up
	o var.c: avoid compiler warning from hexdigits

mk/ChangeLog since bmake-20250804

2025-11-18  Simon J Gerraty  <sjg@beast.crufty.net>

	* sys.vars.mk: set MAKE_POSIX_SHELL to 1 if .SHELL is POSIX, 0 if not.
	set isPOSIX_SHELL for use in target scripts.

	* meta.stage.mk: set MAKE_POSIX_SHELL if needed.

	* install-new.mk: use ${isPOSIX_SHELL:Ufalse} to see if we can
	avoid running 'expr'.

	* install-new.mk: Allow use of cp or mv - controlled by CPMV_OP
	(default mv).

2025-11-13  Simon J Gerraty  <sjg@beast.crufty.net>

	* sys.vars.mk: add M_sh1 so we can handle older bmake that does
	not support :sh1

2025-11-11  Simon J Gerraty  <sjg@beast.crufty.net>

	* install-mk (MK_VERSION): 20251111

	* meta2deps.sh: reset some vars for each new meta file
	set meta_file to path of meta file.
	If meta2deps appears in DEBUG_SH set -x.

2025-09-16  Simon J Gerraty  <sjg@beast.crufty.net>

	* options.mk: Add OPTIONS_DEFAULT_DEPENDENT_REQUIRED of the form
	OPTION/REQUIRED[/VALUE]
	if OPTION is $VALUE (default is "yes"), then REQUIRED must be too.
	We add OPTIONS_DEFAULT_DEPENDENT_REQUIRED (sans any /{yes,no}) to
	OPTIONS_DEFAULT_DEPENDENT so DEPENDENT/REQUIRED follow the same
	processing.

	Also add OPTIONS_FORCED_VALUES of the form OPTION/{yes,no}
	we add any OPTIONS_FORCED_NO and OPTIONS_FORCED_YES before
	processing.

	Simplify the processing of OPTIONS_DEFAULT_VALUES and
	OPTIONS_DEFAULT_DEPENDENT by splitting the tuples and use two
	iterator variables in the .for loops.

2025-08-09  Simon J Gerraty  <sjg@beast.crufty.net>

	* install-mk (MK_VERSION): 20250808

	* replace sjg license with just BSD-2-Clause SPDX tag
This commit is contained in:
Simon J. Gerraty
2025-12-03 09:57:57 -08:00
parent 787302bde4
commit 638c66de4a
89 changed files with 657 additions and 685 deletions
+37
View File
@@ -1,3 +1,40 @@
2025-11-15 Simon J Gerraty <sjg@beast.crufty.net>
* boot-strap: unset more things from env and save a copy
to env.out for debugging.
2025-11-12 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20251111
Merge with NetBSD make, pick up
o var.c: add :sh1 which only evaluates command on first reference.
2025-11-11 Simon J Gerraty <sjg@beast.crufty.net>
* configure.in: Force filemon=no for Cygwin and MINGW64_NT
2025-11-10 Simon J Gerraty <sjg@beast.crufty.net>
* unit-tests/Makefile: handle MINGW64_NT
mark some tests broken, filter others as per Cygwin.
2025-10-23 Simon J Gerraty <sjg@beast.crufty.net>
* make.1: document MAKE_VERSION.
2025-10-22 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20251022
* configure.in: Add a check that lua is version 5.2 or later
if not we want to skip running check-expect.lua
2025-09-16 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250916
Merge with NetBSD make, pick up
o var.c: avoid compiler warning from hexdigits
2025-08-04 Simon J Gerraty <sjg@beast.crufty.net> 2025-08-04 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250804 * VERSION (_MAKE_VERSION): 20250804
+2
View File
@@ -760,6 +760,8 @@ unit-tests/varmod-subst.exp
unit-tests/varmod-subst.mk unit-tests/varmod-subst.mk
unit-tests/varmod-sun-shell.exp unit-tests/varmod-sun-shell.exp
unit-tests/varmod-sun-shell.mk unit-tests/varmod-sun-shell.mk
unit-tests/varmod-sun-shell1.exp
unit-tests/varmod-sun-shell1.mk
unit-tests/varmod-sysv.exp unit-tests/varmod-sysv.exp
unit-tests/varmod-sysv.mk unit-tests/varmod-sysv.mk
unit-tests/varmod-tail.exp unit-tests/varmod-tail.exp
+3 -3
View File
@@ -2,11 +2,11 @@ The individual files in this distribution are copyright their
original contributors or assignees. original contributors or assignees.
Including: Including:
Copyright (c) 1993-2021, Simon J Gerraty Copyright (c) 1993-2025, Simon J Gerraty
Copyright (c) 2020, Roland Illig <rillig@NetBSD.org> Copyright (c) 2020-2021, Roland Illig <rillig@NetBSD.org>
Copyright (c) 2009-2016, Juniper Networks, Inc. Copyright (c) 2009-2016, Juniper Networks, Inc.
Copyright (c) 2009, John Birrell. Copyright (c) 2009, John Birrell.
Copyright (c) 1997-2021 The NetBSD Foundation, Inc. Copyright (c) 1997-2025 The NetBSD Foundation, Inc.
Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com> Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
Copyright (c) 1989 by Berkeley Softworks Copyright (c) 1989 by Berkeley Softworks
Copyright (c) 1988, 1989, 1990, 1992, 1993 Copyright (c) 1988, 1989, 1990, 1992, 1993
+1 -1
View File
@@ -1,2 +1,2 @@
# keep this compatible with sh and make # keep this compatible with sh and make
_MAKE_VERSION=20250804 _MAKE_VERSION=20251111
+11 -2
View File
@@ -1,4 +1,4 @@
.\" $NetBSD: make.1,v 1.387 2025/07/02 17:11:56 rillig Exp $ .\" $NetBSD: make.1,v 1.388 2025/11/12 22:14:07 sjg 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 July 2, 2025 .Dd November 11, 2025
.Dt BMAKE 1 .Dt BMAKE 1
.Os .Os
.Sh NAME .Sh NAME
@@ -945,6 +945,11 @@ include additional unexpanded variable references) are shown.
.It Va .MAKE.EXPORTED .It Va .MAKE.EXPORTED
The list of variables exported by The list of variables exported by
.Nm . .Nm .
.It Va MAKE_VERSION
This variable indicates the version of
.Nm .
It is typically the date of last import from NetBSD.
It is useful for checking whether certain features are available.
.It Va MAKEFILE .It Va MAKEFILE
The top-level makefile that is currently read, The top-level makefile that is currently read,
as given in the command line. as given in the command line.
@@ -1881,6 +1886,10 @@ The output of running
is the value. is the value.
.It Cm \&:sh .It Cm \&:sh
The value is run as a command, and the output becomes the new value. The value is run as a command, and the output becomes the new value.
.It Cm \&:sh1
The value is run as a command, for the first reference only, and
the output is cached for subsequent references.
This modifier is useful when the result is not expected to change.
.It Cm \&::= Ns Ar str .It Cm \&::= Ns Ar str
The variable is assigned the value The variable is assigned the value
.Ar str .Ar str
+11 -1
View File
@@ -607,6 +607,11 @@ VVAARRIIAABBLLEE AASSSSIIGGNNMMEENNTTSS
_._M_A_K_E_._E_X_P_O_R_T_E_D _._M_A_K_E_._E_X_P_O_R_T_E_D
The list of variables exported by bbmmaakkee. The list of variables exported by bbmmaakkee.
_M_A_K_E___V_E_R_S_I_O_N
This variable indicates the version of bbmmaakkee. It is typically
the date of last import from NetBSD. It is useful for checking
whether certain features are available.
_M_A_K_E_F_I_L_E _M_A_K_E_F_I_L_E
The top-level makefile that is currently read, as given in the The top-level makefile that is currently read, as given in the
command line. command line.
@@ -1190,6 +1195,11 @@ VVAARRIIAABBLLEE AASSSSIIGGNNMMEENNTTSS
::sshh The value is run as a command, and the output becomes the new value. ::sshh The value is run as a command, and the output becomes the new value.
::sshh11
The value is run as a command, for the first reference only, and the
output is cached for subsequent references. This modifier is useful
when the result is not expected to change.
::::==_s_t_r ::::==_s_t_r
The variable is assigned the value _s_t_r after substitution. This The variable is assigned the value _s_t_r after substitution. This
modifier and its variations are useful in obscure situations such as modifier and its variations are useful in obscure situations such as
@@ -1864,4 +1874,4 @@ BBUUGGSS
attempt to suppress a cascade of unnecessary errors, can result in a attempt to suppress a cascade of unnecessary errors, can result in a
seemingly unexplained `*** Error code 6' seemingly unexplained `*** Error code 6'
FreeBSD 14.2-RELEASE-p1 July 2, 2025 FreeBSD 14.2-RELEASE-p1 FreeBSD 14.3-RELEASE-p3 November 11, 2025 FreeBSD 14.3-RELEASE-p3

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 95 KiB

+19 -4
View File
@@ -133,7 +133,7 @@
# Simon J. Gerraty <sjg@crufty.net> # Simon J. Gerraty <sjg@crufty.net>
# RCSid: # RCSid:
# $Id: boot-strap,v 1.61 2024/03/10 17:51:10 sjg Exp $ # $Id: boot-strap,v 1.62 2025/11/15 16:53:14 sjg Exp $
# #
# @(#) Copyright (c) 2001 Simon J. Gerraty # @(#) Copyright (c) 2001 Simon J. Gerraty
# #
@@ -179,12 +179,25 @@ source_rc() {
done done
} }
have() {
case `(type "$1") 2>&1` in
*" found") return 1;;
esac
return 0
}
Env() {
have env && env || set
}
cmd_args="$@" cmd_args="$@"
# clear some things from the environment that we care about # clear some things from the environment that we care about
unset MAKEOBJDIR MAKEOBJDIRPREFIX # any variable starting with any of these prefixes will be unset
# or that might be incompatible for p in MAKE OBJ SB WITH
unset MAKE MAKEFLAGS do
unset ENV `Env | sed -n "/^$p/s,=.*,,p"`
done
# --install[-host-target] will set this # --install[-host-target] will set this
INSTALL_PREFIX= INSTALL_PREFIX=
@@ -381,6 +394,8 @@ objdir="${objdir:-$OBJROOT$HOST_TARGET}"
cd "$objdir" || exit 1 cd "$objdir" || exit 1
# make it absolute # make it absolute
objdir=`'pwd'` objdir=`'pwd'`
# save a copy of our env for debugging
Env > env.out
ShareDir() { ShareDir() {
case "/$1" in case "/$1" in
Vendored
+44 -9
View File
@@ -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.72 for bmake 20240711. # Generated by GNU Autoconf 2.72 for bmake 20251111.
# #
# Report bugs to <sjg@NetBSD.org>. # Report bugs to <sjg@NetBSD.org>.
# #
@@ -603,8 +603,8 @@ MAKEFLAGS=
# Identity of this package. # Identity of this package.
PACKAGE_NAME='bmake' PACKAGE_NAME='bmake'
PACKAGE_TARNAME='bmake' PACKAGE_TARNAME='bmake'
PACKAGE_VERSION='20240711' PACKAGE_VERSION='20251111'
PACKAGE_STRING='bmake 20240711' PACKAGE_STRING='bmake 20251111'
PACKAGE_BUGREPORT='sjg@NetBSD.org' PACKAGE_BUGREPORT='sjg@NetBSD.org'
PACKAGE_URL='' PACKAGE_URL=''
@@ -644,6 +644,7 @@ ac_func_c_list=
ac_subst_vars='LTLIBOBJS ac_subst_vars='LTLIBOBJS
UTC_1 UTC_1
_MAKE_VERSION _MAKE_VERSION
lua
filemon_h filemon_h
use_filemon use_filemon
use_meta use_meta
@@ -720,6 +721,7 @@ with_makefile
with_meta with_meta
with_filemon with_filemon
with_bmake_strftime with_bmake_strftime
with_lua
with_machine with_machine
with_force_machine with_force_machine
with_force_machine_arch with_force_machine_arch
@@ -1286,7 +1288,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 20240711 to adapt to many kinds of systems. 'configure' configures bmake 20251111 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1348,7 +1350,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 20240711:";; short | recursive ) echo "Configuration of bmake 20251111:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@@ -1371,6 +1373,7 @@ Optional Packages:
--without-meta disable use of meta-mode --without-meta disable use of meta-mode
--with-filemon={no,dev,ktrace,path/filemon.h} indicate filemon method for meta-mode. Path to filemon.h implies dev --with-filemon={no,dev,ktrace,path/filemon.h} indicate filemon method for meta-mode. Path to filemon.h implies dev
--with-bmake-strftime force use of bmake strftime --with-bmake-strftime force use of bmake strftime
--without-lua do not use check-expect.lua
--with-machine=MACHINE explicitly set MACHINE --with-machine=MACHINE explicitly set MACHINE
--with-force-machine=MACHINE set FORCE_MACHINE --with-force-machine=MACHINE set FORCE_MACHINE
--with-force-machine-arch=MACHINE set FORCE_MACHINE_ARCH --with-force-machine-arch=MACHINE set FORCE_MACHINE_ARCH
@@ -1458,7 +1461,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 20240711 bmake configure 20251111
generated by GNU Autoconf 2.72 generated by GNU Autoconf 2.72
Copyright (C) 2023 Free Software Foundation, Inc. Copyright (C) 2023 Free Software Foundation, Inc.
@@ -1981,7 +1984,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 20240711, which was It was created by bmake $as_me 20251111, which was
generated by GNU Autoconf 2.72. Invocation command line was generated by GNU Autoconf 2.72. Invocation command line was
$ $0$ac_configure_args_raw $ $0$ac_configure_args_raw
@@ -2772,6 +2775,13 @@ esac
. $srcdir/VERSION . $srcdir/VERSION
OS=`uname -s` OS=`uname -s`
have() {
case `(type "$1") 2>&1` in
*" found") return 1;;
esac
return 0
}
use_defshell() { use_defshell() {
case "$defshell_path$DEFSHELL_INDEX" in case "$defshell_path$DEFSHELL_INDEX" in
"") ;; "") ;;
@@ -2867,6 +2877,7 @@ esac
else case e in #( else case e in #(
e) e)
case "$OS" in case "$OS" in
Cygwin*|MINGW*) use_filemon=no;;
NetBSD) filemon_h=no use_filemon=ktrace;; NetBSD) filemon_h=no use_filemon=ktrace;;
*) *)
for d in "/usr/include/dev/filemon" "$prefix/include/dev/filemon" "$srcdir/../../sys/dev/filemon" for d in "/usr/include/dev/filemon" "$prefix/include/dev/filemon" "$srcdir/../../sys/dev/filemon"
@@ -2943,6 +2954,29 @@ do
PATH=$PATH:$d PATH=$PATH:$d
done done
export PATH export PATH
lua=$LUA
# Check whether --with-lua was given.
if test ${with_lua+y}
then :
withval=$with_lua; case "${withval}" in
no) lua=:;;
yes) lua= ;;
/*lua*) lua=$withval;;
*) as_fn_error $? "bad value ${withval} given for lua" "$LINENO" 5;;
esac
fi
if test "x$lua" != x:; then
if have lua; then
lua_version=`${lua:-lua} -v | sed 's/Lua //;s/ *Copy.*//;'`
echo $ECHO_N "checking whether lua version ($lua_version) > 5.2... $ECHO_C" >&6
case "$lua_version" in
4.*|5.1.*) lua=:; echo no >&6;;
*) echo yes >&6;;
esac
fi
fi
@@ -7277,6 +7311,7 @@ esac
bm_outfiles="Makefile.config unit-tests/Makefile.config make-bootstrap.sh" bm_outfiles="Makefile.config unit-tests/Makefile.config make-bootstrap.sh"
if test $use_makefile = yes; then if test $use_makefile = yes; then
bm_outfiles="makefile $bm_outfiles" bm_outfiles="makefile $bm_outfiles"
@@ -7798,7 +7833,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 20240711, which was This file was extended by bmake $as_me 20251111, which was
generated by GNU Autoconf 2.72. Invocation command line was generated by GNU Autoconf 2.72. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@@ -7862,7 +7897,7 @@ ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config='$ac_cs_config_escaped' ac_cs_config='$ac_cs_config_escaped'
ac_cs_version="\\ ac_cs_version="\\
bmake config.status 20240711 bmake config.status 20251111
configured by $0, generated by GNU Autoconf 2.72, configured by $0, generated by GNU Autoconf 2.72,
with options \\"\$ac_cs_config\\" with options \\"\$ac_cs_config\\"
+34 -2
View File
@@ -1,11 +1,11 @@
dnl dnl
dnl RCSid: dnl RCSid:
dnl $Id: configure.in,v 1.108 2024/07/13 15:27:00 sjg Exp $ dnl $Id: configure.in,v 1.111 2025/11/11 18:43:59 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.71]) AC_PREREQ([2.71])
AC_INIT([bmake],[20240711],[sjg@NetBSD.org]) AC_INIT([bmake],[20251111],[sjg@NetBSD.org])
AC_CONFIG_HEADERS(config.h) AC_CONFIG_HEADERS(config.h)
dnl make srcdir absolute dnl make srcdir absolute
@@ -18,6 +18,14 @@ dnl get _MAKE_VERSION
. $srcdir/VERSION . $srcdir/VERSION
OS=`uname -s` OS=`uname -s`
dnl do not trust return from type
have() {
case `(type "$1") 2>&1` in
*" found") return 1;;
esac
return 0
}
dnl function to set DEFSHELL_INDEX dnl function to set DEFSHELL_INDEX
use_defshell() { use_defshell() {
case "$defshell_path$DEFSHELL_INDEX" in case "$defshell_path$DEFSHELL_INDEX" in
@@ -107,6 +115,7 @@ esac
], ],
[ [
case "$OS" in case "$OS" in
Cygwin*|MINGW*) use_filemon=no;;
NetBSD) filemon_h=no use_filemon=ktrace;; NetBSD) filemon_h=no use_filemon=ktrace;;
*) *)
for d in "/usr/include/dev/filemon" "$prefix/include/dev/filemon" "$srcdir/../../sys/dev/filemon" for d in "/usr/include/dev/filemon" "$prefix/include/dev/filemon" "$srcdir/../../sys/dev/filemon"
@@ -187,6 +196,28 @@ do
PATH=$PATH:$d PATH=$PATH:$d
done done
export PATH export PATH
dnl
dnl if lua is available check it is version 5.2 or later
lua=$LUA
AC_ARG_WITH(lua,
[ --without-lua do not use check-expect.lua],
[case "${withval}" in
no) lua=:;;
yes) lua= ;;
/*lua*) lua=$withval;;
*) AC_MSG_ERROR(bad value ${withval} given for lua);;
esac])
if test "x$lua" != x:; then
if have lua; then
lua_version=`${lua:-lua} -v | sed 's/Lua //;s/ *Copy.*//;'`
echo $ECHO_N "checking whether lua version ($lua_version) > 5.2... $ECHO_C" >&6
case "$lua_version" in
4.*|5.1.*) lua=:; echo no >&6;;
*) echo yes >&6;;
esac
fi
fi
dnl
dnl Solaris's signal.h only privides sigset_t etc if one of dnl Solaris's signal.h only privides sigset_t etc if one of
dnl _EXTENSIONS_ _POSIX_C_SOURCE or _XOPEN_SOURCE are defined. dnl _EXTENSIONS_ _POSIX_C_SOURCE or _XOPEN_SOURCE are defined.
dnl The later two seem to cause more problems than they solve so if we dnl The later two seem to cause more problems than they solve so if we
@@ -580,6 +611,7 @@ AC_SUBST(diff_u)
AC_SUBST(use_meta) AC_SUBST(use_meta)
AC_SUBST(use_filemon) AC_SUBST(use_filemon)
AC_SUBST(filemon_h) AC_SUBST(filemon_h)
AC_SUBST(lua)
AC_SUBST(_MAKE_VERSION) AC_SUBST(_MAKE_VERSION)
AC_SUBST(UTC_1) AC_SUBST(UTC_1)
bm_outfiles="Makefile.config unit-tests/Makefile.config make-bootstrap.sh" bm_outfiles="Makefile.config unit-tests/Makefile.config make-bootstrap.sh"
+2 -9
View File
@@ -53,19 +53,12 @@
# Simon J. Gerraty <sjg@crufty.net> # Simon J. Gerraty <sjg@crufty.net>
# #
# SPDX-License-Identifier: BSD-2-Clause
#
# RCSid: # RCSid:
# $Id: install-sh,v 1.26 2024/02/17 17:26:57 sjg Exp $ # $Id: install-sh,v 1.27 2025/08/09 22:42:24 sjg Exp $
# #
# @(#) Copyright (c) 1993-2023 Simon J. Gerraty # @(#) Copyright (c) 1993-2023 Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+4 -5
View File
@@ -1,4 +1,4 @@
/* $NetBSD: main.c,v 1.661 2025/07/06 07:11:31 rillig Exp $ */ /* $NetBSD: main.c,v 1.662 2025/08/09 23:13:28 rillig Exp $ */
/* /*
* Copyright (c) 1988, 1989, 1990, 1993 * Copyright (c) 1988, 1989, 1990, 1993
@@ -111,7 +111,7 @@
#include "trace.h" #include "trace.h"
/* "@(#)main.c 8.3 (Berkeley) 3/19/94" */ /* "@(#)main.c 8.3 (Berkeley) 3/19/94" */
MAKE_RCSID("$NetBSD: main.c,v 1.661 2025/07/06 07:11:31 rillig Exp $"); MAKE_RCSID("$NetBSD: main.c,v 1.662 2025/08/09 23:13:28 rillig Exp $");
#if defined(MAKE_NATIVE) #if defined(MAKE_NATIVE)
__COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1990, 1993 " __COPYRIGHT("@(#) Copyright (c) 1988, 1989, 1990, 1993 "
"The Regents of the University of California. " "The Regents of the University of California. "
@@ -390,8 +390,8 @@ MainParseArgJobsInternal(const char *argvalue)
progname, argvalue, curdir); progname, argvalue, curdir);
exit(2); exit(2);
} }
if ((fcntl(tokenPoolReader, F_GETFD, 0) < 0) || if (fcntl(tokenPoolReader, F_GETFD, 0) < 0 ||
(fcntl(tokenPoolWriter, F_GETFD, 0) < 0)) { fcntl(tokenPoolWriter, F_GETFD, 0) < 0) {
tokenPoolReader = -1; tokenPoolReader = -1;
tokenPoolWriter = -1; tokenPoolWriter = -1;
bogusJflag = true; bogusJflag = true;
@@ -1802,7 +1802,6 @@ Cmd_Exec(const char *cmd, char **error)
(void)execv(shellPath, UNCONST(args)); (void)execv(shellPath, UNCONST(args));
_exit(1); _exit(1);
/* NOTREACHED */
case -1: case -1:
*error = str_concat3("Couldn't exec \"", cmd, "\""); *error = str_concat3("Couldn't exec \"", cmd, "\"");
+11 -2
View File
@@ -1,4 +1,4 @@
.\" $NetBSD: make.1,v 1.387 2025/07/02 17:11:56 rillig Exp $ .\" $NetBSD: make.1,v 1.388 2025/11/12 22:14:07 sjg 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 July 2, 2025 .Dd November 11, 2025
.Dt MAKE 1 .Dt MAKE 1
.Os .Os
.Sh NAME .Sh NAME
@@ -945,6 +945,11 @@ include additional unexpanded variable references) are shown.
.It Va .MAKE.EXPORTED .It Va .MAKE.EXPORTED
The list of variables exported by The list of variables exported by
.Nm . .Nm .
.It Va MAKE_VERSION
This variable indicates the version of
.Nm .
It is typically the date of last import from NetBSD.
It is useful for checking whether certain features are available.
.It Va MAKEFILE .It Va MAKEFILE
The top-level makefile that is currently read, The top-level makefile that is currently read,
as given in the command line. as given in the command line.
@@ -1881,6 +1886,10 @@ The output of running
is the value. is the value.
.It Cm \&:sh .It Cm \&:sh
The value is run as a command, and the output becomes the new value. The value is run as a command, and the output becomes the new value.
.It Cm \&:sh1
The value is run as a command, for the first reference only, and
the output is cached for subsequent references.
This modifier is useful when the result is not expected to change.
.It Cm \&::= Ns Ar str .It Cm \&::= Ns Ar str
The variable is assigned the value The variable is assigned the value
.Ar str .Ar str
+49
View File
@@ -1,3 +1,52 @@
2025-11-18 Simon J Gerraty <sjg@beast.crufty.net>
* sys.vars.mk: set MAKE_POSIX_SHELL to 1 if .SHELL is POSIX, 0 if not.
set isPOSIX_SHELL for use in target scripts.
* meta.stage.mk: set MAKE_POSIX_SHELL if needed.
* install-new.mk: use ${isPOSIX_SHELL:Ufalse} to see if we can
avoid running 'expr'.
* install-new.mk: Allow use of cp or mv - controlled by CPMV_OP
(default mv).
2025-11-13 Simon J Gerraty <sjg@beast.crufty.net>
* sys.vars.mk: add M_sh1 so we can handle older bmake that does
not support :sh1
2025-11-11 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20251111
* meta2deps.sh: reset some vars for each new meta file
set meta_file to path of meta file.
If meta2deps appears in DEBUG_SH set -x.
2025-09-16 Simon J Gerraty <sjg@beast.crufty.net>
* options.mk: Add OPTIONS_DEFAULT_DEPENDENT_REQUIRED of the form
OPTION/REQUIRED[/VALUE]
if OPTION is $VALUE (default is "yes"), then REQUIRED must be too.
We add OPTIONS_DEFAULT_DEPENDENT_REQUIRED (sans any /{yes,no}) to
OPTIONS_DEFAULT_DEPENDENT so DEPENDENT/REQUIRED follow the same
processing.
Also add OPTIONS_FORCED_VALUES of the form OPTION/{yes,no}
we add any OPTIONS_FORCED_NO and OPTIONS_FORCED_YES before
processing.
Simplify the processing of OPTIONS_DEFAULT_VALUES and
OPTIONS_DEFAULT_DEPENDENT by splitting the tuples and use two
iterator variables in the .for loops.
2025-08-09 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20250808
* replace sjg license with just BSD-2-Clause SPDX tag
2025-07-24 Simon J Gerraty <sjg@beast.crufty.net> 2025-07-24 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20250724 * install-mk (MK_VERSION): 20250724
+2 -10
View File
@@ -1,16 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: auto.dep.mk,v 1.13 2025/08/09 22:42:24 sjg Exp $
#
# RCSid:
# $Id: auto.dep.mk,v 1.12 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2010-2021, Simon J. Gerraty # @(#) Copyright (c) 2010-2021, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: auto.obj.mk,v 1.21 2025/08/09 22:42:24 sjg Exp $
#
# $Id: auto.obj.mk,v 1.20 2025/05/17 15:29:55 sjg Exp $
# #
# @(#) Copyright (c) 2004-2025, Simon J. Gerraty # @(#) Copyright (c) 2004-2025, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: autoconf.mk,v 1.21 2025/08/09 22:42:24 sjg Exp $
#
# $Id: autoconf.mk,v 1.20 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 1996-2024, Simon J. Gerraty # @(#) Copyright (c) 1996-2024, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -10
View File
@@ -1,16 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: autodep.mk,v 1.44 2025/08/09 22:42:24 sjg Exp $
#
# RCSid:
# $Id: autodep.mk,v 1.43 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 1999-2024, Simon J. Gerraty # @(#) Copyright (c) 1999-2024, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: cc-wrap.mk,v 1.8 2025/08/09 22:42:24 sjg Exp $
#
# $Id: cc-wrap.mk,v 1.7 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2022, Simon J. Gerraty # @(#) Copyright (c) 2022, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -10
View File
@@ -1,16 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: ccm.dep.mk,v 1.4 2025/08/09 22:42:24 sjg Exp $
#
# RCSid:
# $Id: ccm.dep.mk,v 1.3 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2024, Simon J. Gerraty # @(#) Copyright (c) 2024, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: compiler.mk,v 1.15 2025/08/09 22:42:24 sjg Exp $
#
# $Id: compiler.mk,v 1.14 2024/02/19 00:05:50 sjg Exp $
# #
# @(#) Copyright (c) 2019, Simon J. Gerraty # @(#) Copyright (c) 2019, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -10
View File
@@ -1,16 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: cython.mk,v 1.11 2025/08/09 22:42:24 sjg Exp $
#
# RCSid:
# $Id: cython.mk,v 1.10 2024/09/20 06:16:41 sjg Exp $
# #
# @(#) Copyright (c) 2014-2024, Simon J. Gerraty # @(#) Copyright (c) 2014-2024, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: dirdeps-cache-update.mk,v 1.24 2025/08/09 22:42:24 sjg Exp $
#
# $Id: dirdeps-cache-update.mk,v 1.23 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2020, Simon J. Gerraty # @(#) Copyright (c) 2020, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: dirdeps-options.mk,v 1.23 2025/08/09 22:42:24 sjg Exp $
#
# $Id: dirdeps-options.mk,v 1.22 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2018-2022, Simon J. Gerraty # @(#) Copyright (c) 2018-2022, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -10
View File
@@ -1,16 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: dirdeps-targets.mk,v 1.29 2025/08/09 22:42:24 sjg Exp $
#
# RCSid:
# $Id: dirdeps-targets.mk,v 1.28 2024/10/19 00:47:38 sjg Exp $
# #
# @(#) Copyright (c) 2019-2020 Simon J. Gerraty # @(#) Copyright (c) 2019-2020 Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: dpadd.mk,v 1.34 2025/08/09 22:42:24 sjg Exp $
#
# $Id: dpadd.mk,v 1.33 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2004-2023, Simon J. Gerraty # @(#) Copyright (c) 2004-2023, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: files.mk,v 1.9 2025/08/09 22:42:24 sjg Exp $
#
# $Id: files.mk,v 1.8 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2017, Simon J. Gerraty # @(#) Copyright (c) 2017, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -1
View File
@@ -1,4 +1,4 @@
# $Id: gendirdeps.mk,v 1.53 2025/05/20 17:42:49 sjg Exp $ # $Id: gendirdeps.mk,v 1.54 2025/08/12 21:36:43 sjg Exp $
# SPDX-License-Identifier: BSD-2-Clause # SPDX-License-Identifier: BSD-2-Clause
# #
@@ -299,6 +299,7 @@ M2D_OBJROOTS := ${M2D_OBJROOTS:O:u:[-1..1]}
# needs to be qualified with its .<machine> suffix # needs to be qualified with its .<machine> suffix
# (we used the pseudo machine "host" for the HOST_TARGET). # (we used the pseudo machine "host" for the HOST_TARGET).
skip_ql = ${SRCTOP}* ${_objtops:@o@$o*@} skip_ql = ${SRCTOP}* ${_objtops:@o@$o*@}
M_ListToSkip ?= O:u:S,^,N,:ts:
.for o in ${M2D_OBJROOTS:${skip_ql:${M_ListToSkip}}} .for o in ${M2D_OBJROOTS:${skip_ql:${M_ListToSkip}}}
# we need := so only skip_ql to this point applies # we need := so only skip_ql to this point applies
ql.$o := ${dir_list:${skip_ql:${M_ListToSkip}}:M$o*/*/*:C,$o([^/]+)/(.*),\2.\1,:S,.${HOST_TARGET},.host,} ql.$o := ${dir_list:${skip_ql:${M_ListToSkip}}:M$o*/*/*:C,$o([^/]+)/(.*),\2.\1,:S,.${HOST_TARGET},.host,}
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: genfiles.mk,v 1.5 2025/08/09 22:42:24 sjg Exp $
#
# $Id: genfiles.mk,v 1.4 2025/04/18 00:04:41 sjg Exp $
# #
# @(#) Copyright (c) 2024-2025, Simon J. Gerraty # @(#) Copyright (c) 2024-2025, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -10
View File
@@ -1,16 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: host-target.mk,v 1.21 2025/08/09 22:42:24 sjg Exp $
#
# RCSid:
# $Id: host-target.mk,v 1.20 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2007-2023 Simon J. Gerraty # @(#) Copyright (c) 2007-2023 Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -7
View File
@@ -1,13 +1,8 @@
# $Id: host.libnames.mk,v 1.5 2020/08/19 17:51:53 sjg Exp $ # $Id: host.libnames.mk,v 1.6 2025/08/09 22:42:24 sjg Exp $
# #
# @(#) Copyright (c) 2007-2009, Simon J. Gerraty # @(#) Copyright (c) 2007-2009, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: inc.mk,v 1.10 2025/08/09 22:42:24 sjg Exp $
#
# $Id: inc.mk,v 1.9 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2008, Simon J. Gerraty # @(#) Copyright (c) 2008, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: init.mk,v 1.42 2025/08/09 22:42:24 sjg Exp $
#
# $Id: init.mk,v 1.41 2025/04/18 20:49:54 sjg Exp $
# #
# @(#) Copyright (c) 2002-2024, Simon J. Gerraty # @(#) Copyright (c) 2002-2024, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
Executable → Regular
+3 -8
View File
@@ -59,22 +59,17 @@
# Simon J. Gerraty <sjg@crufty.net> # Simon J. Gerraty <sjg@crufty.net>
# RCSid: # RCSid:
# $Id: install-mk,v 1.268 2025/07/24 15:55:48 sjg Exp $ # $Id: install-mk,v 1.271 2025/11/11 18:08:02 sjg Exp $
# #
# @(#) Copyright (c) 1994-2025 Simon J. Gerraty # @(#) Copyright (c) 1994-2025 Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
# #
MK_VERSION=20250724 MK_VERSION=20251111
OWNER= OWNER=
GROUP= GROUP=
MODE=444 MODE=444
+19 -15
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: install-new.mk,v 1.9 2025/11/19 17:44:15 sjg Exp $
#
# $Id: install-new.mk,v 1.5 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2009, Simon J. Gerraty # @(#) Copyright (c) 2009, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
@@ -17,25 +10,32 @@
.if !defined(InstallNew) .if !defined(InstallNew)
# copy if src and target are different making a backup if desired # How do we want CmpCpMv to do the final operation?
CmpCp= CmpCp() { \ # the backup (if any) will use the opposite.
CPMV_OP ?= mv
# clear this if not supported
CPMV_f ?= -f
# copy/move if src and target are different making a backup if desired
CmpCpMv= CmpCpMv() { \
src=$$1 target=$$2 _bak=$$3; \ src=$$1 target=$$2 _bak=$$3; \
if ! test -s $$target || ! cmp -s $$target $$src; then \ if ! test -s $$target || ! cmp -s $$target $$src; then \
trap "" 1 2 3 15; \ trap "" 1 2 3 15; \
case "/${CPMV_OP}" in */cp) bop=mv;; */mv) bop=cp;; esac; \
if test -s $$target; then \ if test -s $$target; then \
if test "x$$_bak" != x; then \ if test "x$$_bak" != x; then \
rm -f $$target$$_bak; \ rm -f $$target$$_bak; \
mv $$target $$target$$_bak; \ $$bop ${CPMV_f} $$target $$target$$_bak; \
else \ else \
rm -f $$target; \ rm -f $$target; \
fi; \ fi; \
fi; \ fi; \
cp $$src $$target; \ ${CPMV_OP} ${CPMV_f} $$src $$target; \
fi; } fi; }
# If the .new file is different, we want it. # If the .new file is different, we want it.
# Note: this function will work as is for *.new$RANDOM" # Note: this function will work as is for *.new$RANDOM"
InstallNew= ${CmpCp}; InstallNew() { \ InstallNew= ${CmpCpMv}; InstallNew() { \
_t=-e; _bak=; \ _t=-e; _bak=; \
while :; do \ while :; do \
case "$$1" in \ case "$$1" in \
@@ -46,8 +46,12 @@ InstallNew= ${CmpCp}; InstallNew() { \
done; \ done; \
for new in "$$@"; do \ for new in "$$@"; do \
if test $$_t $$new; then \ if test $$_t $$new; then \
if ${isPOSIX_SHELL:Ufalse}; then \
target=$${new%.new}; \
else \
target=`expr $$new : '\(.*\).new'`; \ target=`expr $$new : '\(.*\).new'`; \
CmpCp $$new $$target $$_bak; \ fi; \
CmpCpMv $$new $$target $$_bak; \
fi; \ fi; \
rm -f $$new; \ rm -f $$new; \
done; :; } done; :; }
+2 -9
View File
@@ -53,19 +53,12 @@
# Simon J. Gerraty <sjg@crufty.net> # Simon J. Gerraty <sjg@crufty.net>
# #
# SPDX-License-Identifier: BSD-2-Clause
#
# RCSid: # RCSid:
# $Id: install-sh,v 1.26 2024/02/17 17:26:57 sjg Exp $ # $Id: install-sh,v 1.27 2025/08/09 22:42:24 sjg Exp $
# #
# @(#) Copyright (c) 1993-2023 Simon J. Gerraty # @(#) Copyright (c) 1993-2023 Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -10
View File
@@ -1,16 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: java.mk,v 1.18 2025/08/09 22:42:24 sjg Exp $
# #
# RCSid:
# $Id: java.mk,v 1.17 2024/02/17 17:26:57 sjg Exp $
# @(#) Copyright (c) 1998-2001, Simon J. Gerraty # @(#) Copyright (c) 1998-2001, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: jobs.mk,v 1.20 2025/08/09 22:42:24 sjg Exp $
#
# $Id: jobs.mk,v 1.19 2025/02/03 21:18:44 sjg Exp $
# #
# @(#) Copyright (c) 2012-2025, Simon J. Gerraty # @(#) Copyright (c) 2012-2025, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: ldorder.mk,v 1.28 2025/08/09 22:42:24 sjg Exp $
#
# $Id: ldorder.mk,v 1.27 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2015, Simon J. Gerraty # @(#) Copyright (c) 2015, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: libnames.mk,v 1.11 2025/08/09 22:42:24 sjg Exp $
#
# $Id: libnames.mk,v 1.10 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2007-2009, Simon J. Gerraty # @(#) Copyright (c) 2007-2009, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: libs.mk,v 1.9 2025/08/09 22:42:24 sjg Exp $
#
# $Id: libs.mk,v 1.8 2025/05/19 19:15:22 sjg Exp $
# #
# @(#) Copyright (c) 2006, Simon J. Gerraty # @(#) Copyright (c) 2006, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: links.mk,v 1.11 2025/08/09 22:42:24 sjg Exp $
#
# $Id: links.mk,v 1.10 2024/08/23 21:24:27 sjg Exp $
# #
# @(#) Copyright (c) 2005-2024, Simon J. Gerraty # @(#) Copyright (c) 2005-2024, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: manifest.mk,v 1.5 2025/08/09 22:42:24 sjg Exp $
#
# $Id: manifest.mk,v 1.4 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2014, Simon J. Gerraty # @(#) Copyright (c) 2014, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -10
View File
@@ -1,16 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: meta.autodep.mk,v 1.71 2025/08/09 22:42:24 sjg Exp $
#
# $Id: meta.autodep.mk,v 1.70 2025/05/28 20:03:00 sjg Exp $
# #
# @(#) Copyright (c) 2010-2025, Simon J. Gerraty # @(#) Copyright (c) 2010-2025, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+12 -14
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: meta.stage.mk,v 1.74 2025/11/19 17:44:15 sjg Exp $
#
# $Id: meta.stage.mk,v 1.71 2025/03/14 20:28:42 sjg Exp $
# #
# @(#) Copyright (c) 2011-2025, Simon J. Gerraty # @(#) Copyright (c) 2011-2025, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
@@ -38,14 +31,19 @@ CLEANFILES+= .dirdep
@echo '${_dirdep}' > $@ @echo '${_dirdep}' > $@
.endif .endif
.if defined(NO_POSIX_SHELL) || ${type printf:L:sh:Mbuiltin} == "" .ifndef MAKE_POSIX_SHELL
_stage_file_basename = `basename $$f` MAKE_POSIX_SHELL != (echo $${PATH%:*}) > /dev/null 2>&1 && echo 1 || echo 0
_stage_file_dirname = `dirname $$f` .export MAKE_POSIX_SHELL
_stage_target_dirname = `dirname $$t` .endif
.else
.if ${MAKE_POSIX_SHELL}
_stage_file_basename = $${f\#\#*/} _stage_file_basename = $${f\#\#*/}
_stage_file_dirname = $${f%/*} _stage_file_dirname = $${f%/*}
_stage_target_dirname = $${t%/*} _stage_target_dirname = $${t%/*}
.else
_stage_file_basename = `basename $$f`
_stage_file_dirname = `dirname $$f`
_stage_target_dirname = `dirname $$t`
.endif .endif
_OBJROOT ?= ${OBJROOT:U${OBJTOP:H}} _OBJROOT ?= ${OBJROOT:U${OBJTOP:H}}
+2 -10
View File
@@ -1,16 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: meta.subdir.mk,v 1.16 2025/08/09 22:42:24 sjg Exp $
#
# $Id: meta.subdir.mk,v 1.15 2024/04/19 15:10:22 sjg Exp $
# #
# @(#) Copyright (c) 2010, Simon J. Gerraty # @(#) Copyright (c) 2010, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -10
View File
@@ -1,16 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: meta.sys.mk,v 1.57 2025/08/09 22:42:24 sjg Exp $
#
# $Id: meta.sys.mk,v 1.56 2024/11/22 23:51:48 sjg Exp $
# #
# @(#) Copyright (c) 2010-2023, Simon J. Gerraty # @(#) Copyright (c) 2010-2023, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+18 -6
View File
@@ -77,7 +77,7 @@
# RCSid: # RCSid:
# $Id: meta2deps.sh,v 1.24 2025/07/24 15:55:48 sjg Exp $ # $Id: meta2deps.sh,v 1.25 2025/11/11 18:08:02 sjg Exp $
# SPDX-License-Identifier: BSD-2-Clause # SPDX-License-Identifier: BSD-2-Clause
# #
@@ -106,6 +106,10 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
case ",$DEBUG_SH," in
*,meta2deps*) set -x;;
esac
meta2src() { meta2src() {
cat /dev/null "$@" | cat /dev/null "$@" |
sed -n '/^R .*\.[chyl]$/s,^..[0-9]* ,,p' | sed -n '/^R .*\.[chyl]$/s,^..[0-9]* ,,p' |
@@ -259,7 +263,14 @@ meta2deps() {
# first a sanity check - filemon on Linux is not very reliable # first a sanity check - filemon on Linux is not very reliable
# path2 should only be non-empty for op L or M # path2 should only be non-empty for op L or M
# and it should not contain spaces. # and it should not contain spaces.
# It will also be non-empty for # Meta line
# which tells us which meta_file we are processing
case "$op,$path2" in case "$op,$path2" in
\#*,*.meta) # new file, reset some vars
version=no epids= xpids= eof_token=no lpid=
meta_file=`set -- $path2; echo $2`
continue
;;
\#*) ;; # ok \#*) ;; # ok
[LM],) error "missing path2 in: '$op $pid $path'";; [LM],) error "missing path2 in: '$op $pid $path'";;
[LMX],*" "*) error "wrong number of words in: '$op $pid $path $path2'";; [LMX],*" "*) error "wrong number of words in: '$op $pid $path $path2'";;
@@ -268,6 +279,7 @@ meta2deps() {
esac esac
# we track cwd and ldir (of interest) per pid # we track cwd and ldir (of interest) per pid
# CWD is bmake's cwd # CWD is bmake's cwd
: lpid=$lpid,pid=$pid
case "$lpid,$pid" in case "$lpid,$pid" in
,C) CWD=$path cwd=$path ldir=$path ,C) CWD=$path cwd=$path ldir=$path
if [ -z "$SB" ]; then if [ -z "$SB" ]; then
@@ -276,13 +288,13 @@ meta2deps() {
SRCTOP=${SRCTOP:-$SB/src} SRCTOP=${SRCTOP:-$SB/src}
case "$verion" in case "$verion" in
no) ;; # ignore no) ;; # ignore
0) error "no filemon data";; 0) error "no filemon data: $meta_file";;
*) ;; *) ;;
esac esac
version=0 version=0
case "$eof_token" in case "$eof_token" in
no) ;; # ignore no) ;; # ignore
0) error "truncated filemon data";; 0) error "truncated filemon data: $meta_file";;
esac esac
eof_token=0 eof_token=0
continue continue
@@ -424,18 +436,18 @@ meta2deps() {
done > $tf.dirdep done > $tf.dirdep
: version=$version : version=$version
case "$version" in case "$version" in
0) error "no filemon data";; 0) error "no filemon data: $meta_file";;
esac esac
: eof_token=$eof_token : eof_token=$eof_token
case "$eof_token" in case "$eof_token" in
0) error "truncated filemon data";; 0) error "truncated filemon data: $meta_file";;
esac esac
for p in $epids for p in $epids
do do
: p=$p : p=$p
case " $xpids " in case " $xpids " in
*" $p "*) ;; *" $p "*) ;;
*) error "missing eXit for pid $p";; *) error "missing eXit for pid $p: $meta_file";;
esac esac
done ) || exit 1 done ) || exit 1
_nl=echo _nl=echo
+2 -8
View File
@@ -1,17 +1,11 @@
#!/bin/sh #!/bin/sh
# SPDX-License-Identifier: BSD-2-Clause
# #
# $Id: mkopt.sh,v 1.17 2025/05/22 22:35:14 sjg Exp $ # $Id: mkopt.sh,v 1.18 2025/08/07 21:59:54 sjg Exp $
# #
# @(#) Copyright (c) 2014-2025, Simon J. Gerraty # @(#) Copyright (c) 2014-2025, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -81,18 +81,11 @@
# #
# RCSid: # RCSid:
# $Id: newlog.sh,v 1.30 2025/06/01 05:07:48 sjg Exp $ # $Id: newlog.sh,v 1.31 2025/08/07 22:07:13 sjg Exp $
#
# SPDX-License-Identifier: BSD-2-Clause
# #
# @(#) Copyright (c) 1993-2025 Simon J. Gerraty # @(#) Copyright (c) 1993-2025 Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: obj.mk,v 1.20 2025/08/09 22:42:24 sjg Exp $
#
# $Id: obj.mk,v 1.19 2024/02/19 00:06:19 sjg Exp $
# #
# @(#) Copyright (c) 1999-2010, Simon J. Gerraty # @(#) Copyright (c) 1999-2010, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+103 -47
View File
@@ -1,22 +1,40 @@
# $Id: options.mk,v 1.25 2025/09/18 05:11:59 sjg Exp $
#
# @(#) Copyright (c) 2012-2025, Simon J. Gerraty
#
# SPDX-License-Identifier: BSD-2-Clause # SPDX-License-Identifier: BSD-2-Clause
# #
# $Id: options.mk,v 1.22 2024/10/27 17:33:03 sjg Exp $
#
# @(#) Copyright (c) 2012, Simon J. Gerraty
#
# This file is provided in the hope that it will
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
#
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
# #
# Inspired by FreeBSD bsd.own.mk, but intentionally simpler and more flexible. # Inspired by FreeBSD bsd.own.mk, but intentionally simpler and more flexible.
OPTION_PREFIX ?= MK_
# Options to be forced either "yes" or "no"
OPTIONS_FORCED_VALUES += \
${OPTIONS_BROKEN:U:O:u:S,$,/no,:N/no} \
${OPTIONS_FORCED_NO:U:O:u:S,$,/no,:N/no} \
${OPTIONS_FORCED_YES:U:O:u:S,$,/yes,:N/yes} \
${OPTIONS_REQUIRED:U:O:u:S,$,/yes,:N/yes} \
.for o v in ${OPTIONS_FORCED_VALUES:M*/*:S,/, ,g}
.if !make(show-options)
.if ${v:tl} == "yes"
.if defined(WITHOUT_$o)
.warning WITHOUT_$o ignored
.endif
.elif defined(WITH_$o)
.warning WITH_$o ignored
.endif
.endif
${OPTION_PREFIX}$o := ${v:tl}
.if defined(DEBUG_OPTIONS) && ${DEBUG_OPTIONS:@x@${o:M$x}@} != ""
.info ${.INCLUDEDFROMFILE}: ${OPTION_PREFIX}$o=${${OPTION_PREFIX}$o}
.endif
.endfor
# Options are normally listed in either OPTIONS_DEFAULT_{YES,NO} # Options are normally listed in either OPTIONS_DEFAULT_{YES,NO}
# We convert these to ${OPTION}/{yes,no} in OPTIONS_DEFAULT_VALUES. # We convert these to ${OPTION}/{yes,no} in OPTIONS_DEFAULT_VALUES.
# We add the OPTIONS_DEFAULT_NO first so they take precedence. # We add the OPTIONS_DEFAULT_NO first so they take precedence.
@@ -28,72 +46,104 @@
# User sets WITH_* and WITHOUT_* to indicate what they want. # User sets WITH_* and WITHOUT_* to indicate what they want.
# We set ${OPTION_PREFIX:UMK_}* which is then all we need care about. # We set ${OPTION_PREFIX:UMK_}* which is then all we need care about.
OPTIONS_DEFAULT_VALUES += \ OPTIONS_DEFAULT_VALUES += \
${OPTIONS_DEFAULT_NO:U:O:u:S,$,/no,} \ ${OPTIONS_DEFAULT_NO:U:O:u:S,$,/no,:N/no} \
${OPTIONS_DEFAULT_YES:U:O:u:S,$,/yes,} ${OPTIONS_DEFAULT_YES:U:O:u:S,$,/yes,:N/yes} \
OPTION_PREFIX ?= MK_
# NO_* takes precedence # NO_* takes precedence
# If both WITH_* and WITHOUT_* are defined, WITHOUT_ wins unless # If both WITH_* and WITHOUT_* are defined, WITHOUT_ wins unless
# DOMINANT_* is set to "yes" # OPTION_DOMINANT_* is set to "yes"
# Otherwise WITH_* and WITHOUT_* override the default. # Otherwise WITH_* and WITHOUT_* override the default.
.for o in ${OPTIONS_DEFAULT_VALUES:M*/*} .for o v in ${OPTIONS_DEFAULT_VALUES:M*/*:S,/, ,}
.if defined(WITH_${o:H}) && ${WITH_${o:H}} == "no" .if defined(WITH_$o) && ${WITH_$o:tl} == "no"
# a common miss-use - point out correct usage # a common miss-use - point out correct usage
.warning use WITHOUT_${o:H}=1 not WITH_${o:H}=no .warning use WITHOUT_$o=1 not WITH_$o=no
WITHOUT_$o = 1
.endif .endif
.if defined(NO_${o:H}) || defined(NO${o:H}) .if defined(NO_$o) || defined(NO$o)
# we cannot do it # we cannot do it
${OPTION_PREFIX}${o:H} ?= no ${OPTION_PREFIX}$o ?= no
.elif defined(WITH_${o:H}) && defined(WITHOUT_${o:H}) .elif defined(WITH_$o) && defined(WITHOUT_$o)
# normally WITHOUT_ wins # normally WITHOUT_ wins
DOMINANT_${o:H} ?= no OPTION_DOMINANT_$o ?= no
${OPTION_PREFIX}${o:H} ?= ${DOMINANT_${o:H}} ${OPTION_PREFIX}$o ?= ${OPTION_DOMINANT_$o}
.elif ${o:T:tl} == "no" .elif ${v:tl} == "no"
.if defined(WITH_${o:H}) .if defined(WITH_$o)
${OPTION_PREFIX}${o:H} ?= yes ${OPTION_PREFIX}$o ?= yes
.else .else
${OPTION_PREFIX}${o:H} ?= no ${OPTION_PREFIX}$o ?= no
.endif .endif
.else .else
.if defined(WITHOUT_${o:H}) .if defined(WITHOUT_$o)
${OPTION_PREFIX}${o:H} ?= no ${OPTION_PREFIX}$o ?= no
.else .else
${OPTION_PREFIX}${o:H} ?= yes ${OPTION_PREFIX}$o ?= yes
.endif .endif
.endif .endif
.if defined(DEBUG_OPTIONS) && ${DEBUG_OPTIONS:@x@${o:H:M$x}@} != "" .if defined(DEBUG_OPTIONS) && ${DEBUG_OPTIONS:@x@${o:M$x}@} != ""
.info ${.INCLUDEDFROMFILE}: ${OPTION_PREFIX}${o:H}=${${OPTION_PREFIX}${o:H}} .info ${.INCLUDEDFROMFILE}: ${OPTION_PREFIX}$o=${${OPTION_PREFIX}$o}
.endif .endif
.endfor .endfor
# OPTIONS_DEFAULT_DEPENDENT += FOO_UTILS/FOO # OPTIONS_DEFAULT_DEPENDENT += FOO_UTILS/FOO
# If neither WITH[OUT]_FOO_UTILS is set, (see rules above) # If neither WITH[OUT]_FOO_UTILS is set, (see rules above)
# use the value of ${OPTION_PREFIX}FOO # use the value of ${OPTION_PREFIX}FOO
.for o in ${OPTIONS_DEFAULT_DEPENDENT:M*/*:O:u} # Add OPTIONS_DEFAULT_DEPENDENT_REQUIRED (sans any trailing /{yes,no})
.if defined(NO_${o:H}) || defined(NO${o:H}) # to OPTIONS_DEFAULT_DEPENDENT to avoid the need to duplicate entries
OPTIONS_DEFAULT_DEPENDENT += ${OPTIONS_DEFAULT_DEPENDENT_REQUIRED:U:S,/yes$,,:S,/no$,,}
.for o d in ${OPTIONS_DEFAULT_DEPENDENT:M*/*:S,/, ,}
.if defined(NO_$o) || defined(NO$o)
# we cannot do it # we cannot do it
${OPTION_PREFIX}${o:H} ?= no ${OPTION_PREFIX}$o ?= no
.elif defined(WITH_${o:H}) && defined(WITHOUT_${o:H}) .elif defined(WITH_$o) && defined(WITHOUT_$o)
# normally WITHOUT_ wins # normally WITHOUT_ wins
DOMINANT_${o:H} ?= no OPTION_DOMINANT_$o ?= no
${OPTION_PREFIX}${o:H} ?= ${DOMINANT_${o:H}} ${OPTION_PREFIX}$o ?= ${OPTION_DOMINANT_$o}
.elif defined(WITH_${o:H}) .elif defined(WITH_$o)
${OPTION_PREFIX}${o:H} ?= yes ${OPTION_PREFIX}$o ?= yes
.elif defined(WITHOUT_${o:H}) .elif defined(WITHOUT_$o)
${OPTION_PREFIX}${o:H} ?= no ${OPTION_PREFIX}$o ?= no
.else .else
${OPTION_PREFIX}${o:H} ?= ${${OPTION_PREFIX}${o:T}} ${OPTION_PREFIX}$o ?= ${${OPTION_PREFIX}$d}
.endif .endif
.if defined(DEBUG_OPTIONS) && ${DEBUG_OPTIONS:@x@${o:H:M$x}@} != "" .if defined(DEBUG_OPTIONS) && ${DEBUG_OPTIONS:@x@${o:M$x}@} != ""
.info ${.INCLUDEDFROMFILE}: ${OPTION_PREFIX}${o:H}=${${OPTION_PREFIX}${o:H}} (${OPTION_PREFIX}${o:T}=${${OPTION_PREFIX}${o:T}}) .info ${.INCLUDEDFROMFILE}: ${OPTION_PREFIX}$o=${${OPTION_PREFIX}$o} (${OPTION_PREFIX}$d=${${OPTION_PREFIX}$d})
.endif .endif
.endfor .endfor
# OPTIONS_DEFAULT_DEPENDENT_REQUIRED += FOO_UTILS/FOO[/{yes,no}]
# first processed with OPTIONS_DEFAULT_DEPENDENT above,
# but if ${OPTION_PREFIX}${o:H:H} is ${o:T},
# then ${OPTION_PREFIX}${o:H:T} must be too
.for o in ${OPTIONS_DEFAULT_DEPENDENT_REQUIRED:M*/*:O:u}
# This dance allows /{yes,no} to be optional
.if ${o:T:tl:Nno:Nyes} == ""
$o.H := ${o:H:H}
$o.R := ${o:T}
$o.T := ${o:H:T}
.else
$o.H := ${o:H}
$o.R := ${OPTION_REQUIRED_${o:H}:Uyes}
$o.T := ${o:T}
.endif
.if defined(DEBUG_OPTIONS) && ${DEBUG_OPTIONS:@x@${$o.H:M$x}@} != ""
.info ${.INCLUDEDFROMFILE}: ${OPTION_PREFIX}${$o.H}=${${OPTION_PREFIX}${$o.H}} (${OPTION_PREFIX}${$o.T}=${${OPTION_PREFIX}${$o.T}} require=${$o.R})
.endif
.if ${${OPTION_PREFIX}${$o.H}} != ${${OPTION_PREFIX}${$o.T}}
.if ${${OPTION_PREFIX}${$o.H}} == ${$o.R}
.error ${OPTION_PREFIX}${$o.H}=${${OPTION_PREFIX}${$o.H}} requires ${OPTION_PREFIX}${$o.T}=${${OPTION_PREFIX}${$o.H}}
.endif
.endif
.undef $o.H
.undef $o.R
.undef $o.T
.endfor
# allow displaying/describing set options # allow displaying/describing set options
.set_options := ${.set_options} \ .set_options := ${.set_options} \
${OPTIONS_DEFAULT_VALUES:H:N.} \ ${OPTIONS_DEFAULT_VALUES:U:H:N.} \
${OPTIONS_DEFAULT_DEPENDENT:U:H:N.} \ ${OPTIONS_DEFAULT_DEPENDENT:U:H:N.} \
${OPTIONS_FORCED_VALUES:U:H:N.} \
# this can be used in .info as well as target below # this can be used in .info as well as target below
OPTIONS_SHOW ?= ${.set_options:O:u:@o@${OPTION_PREFIX}$o=${${OPTION_PREFIX}$o}@} OPTIONS_SHOW ?= ${.set_options:O:u:@o@${OPTION_PREFIX}$o=${${OPTION_PREFIX}$o}@}
@@ -114,7 +164,13 @@ describe-options: .NOTMAIN .PHONY
.endif .endif
# we expect to be included more than once # we expect to be included more than once
.undef OPTIONS_BROKEN
.undef OPTIONS_DEFAULT_DEPENDENT .undef OPTIONS_DEFAULT_DEPENDENT
.undef OPTIONS_DEFAULT_DEPENDENT_REQUIRED
.undef OPTIONS_DEFAULT_NO .undef OPTIONS_DEFAULT_NO
.undef OPTIONS_DEFAULT_VALUES .undef OPTIONS_DEFAULT_VALUES
.undef OPTIONS_DEFAULT_YES .undef OPTIONS_DEFAULT_YES
.undef OPTIONS_FORCED_NO
.undef OPTIONS_FORCED_VALUES
.undef OPTIONS_FORCED_YES
.undef OPTIONS_REQUIRED
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: posix.mk,v 1.4 2025/08/09 22:42:24 sjg Exp $
#
# $Id: posix.mk,v 1.3 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2022, Simon J. Gerraty # @(#) Copyright (c) 2022, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: prlist.mk,v 1.7 2025/08/09 22:42:24 sjg Exp $
#
# $Id: prlist.mk,v 1.6 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2006, Simon J. Gerraty # @(#) Copyright (c) 2006, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: progs.mk,v 1.20 2025/08/09 22:42:24 sjg Exp $
#
# $Id: progs.mk,v 1.19 2025/05/19 19:15:22 sjg Exp $
# #
# @(#) Copyright (c) 2006, Simon J. Gerraty # @(#) Copyright (c) 2006, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: rst2htm.mk,v 1.17 2025/08/09 22:42:24 sjg Exp $
#
# $Id: rst2htm.mk,v 1.16 2025/04/16 00:42:07 sjg Exp $
# #
# @(#) Copyright (c) 2009, Simon J. Gerraty # @(#) Copyright (c) 2009, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -10
View File
@@ -1,16 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: rust.mk,v 1.38 2025/08/09 22:42:24 sjg Exp $
#
# RCSid:
# $Id: rust.mk,v 1.37 2025/01/11 03:17:36 sjg Exp $
# #
# @(#) Copyright (c) 2024, Simon J. Gerraty # @(#) Copyright (c) 2024, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: scripts.mk,v 1.6 2025/08/09 22:42:24 sjg Exp $
#
# $Id: scripts.mk,v 1.5 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2006, Simon J. Gerraty # @(#) Copyright (c) 2006, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -7
View File
@@ -50,16 +50,11 @@
# #
# RCSid: # RCSid:
# $Id: setopts.sh,v 1.15 2025/06/01 02:10:31 sjg Exp $ # $Id: setopts.sh,v 1.16 2025/08/07 21:59:54 sjg Exp $
# #
# @(#) Copyright (c) 1995-2025 Simon J. Gerraty # @(#) Copyright (c) 1995-2025 Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: srctop.mk,v 1.6 2025/08/09 22:42:24 sjg Exp $
#
# $Id: srctop.mk,v 1.5 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2012, Simon J. Gerraty # @(#) Copyright (c) 2012, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -7
View File
@@ -37,18 +37,13 @@
# #
# RCSid: # RCSid:
# $Id: stage-install.sh,v 1.11 2024/02/17 17:26:57 sjg Exp $ # $Id: stage-install.sh,v 1.12 2025/08/09 22:42:24 sjg Exp $
# #
# SPDX-License-Identifier: BSD-2-Clause # SPDX-License-Identifier: BSD-2-Clause
# #
# @(#) Copyright (c) 2013-2020, Simon J. Gerraty # @(#) Copyright (c) 2013-2020, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: subdir.mk,v 1.28 2025/08/09 22:42:24 sjg Exp $
#
# $Id: subdir.mk,v 1.27 2024/09/01 05:02:43 sjg Exp $
# #
# @(#) Copyright (c) 2002-2024, Simon J. Gerraty # @(#) Copyright (c) 2002-2024, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: suffixes.mk,v 1.4 2025/08/09 22:42:24 sjg Exp $
#
# $Id: suffixes.mk,v 1.3 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2024, Simon J. Gerraty # @(#) Copyright (c) 2024, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: sys.clean-env.mk,v 1.27 2025/08/09 22:42:24 sjg Exp $
#
# $Id: sys.clean-env.mk,v 1.26 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2009, Simon J. Gerraty # @(#) Copyright (c) 2009, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: sys.debug.mk,v 1.4 2025/08/09 22:42:24 sjg Exp $
#
# $Id: sys.debug.mk,v 1.3 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2009, Simon J. Gerraty # @(#) Copyright (c) 2009, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: sys.dependfile.mk,v 1.12 2025/08/09 22:42:24 sjg Exp $
#
# $Id: sys.dependfile.mk,v 1.11 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2012-2023, Simon J. Gerraty # @(#) Copyright (c) 2012-2023, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: sys.dirdeps.mk,v 1.16 2025/08/09 22:42:24 sjg Exp $
#
# $Id: sys.dirdeps.mk,v 1.15 2024/04/18 17:18:31 sjg Exp $
# #
# @(#) Copyright (c) 2012-2023, Simon J. Gerraty # @(#) Copyright (c) 2012-2023, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: sys.mk,v 1.66 2025/11/19 03:38:20 sjg Exp $
#
# $Id: sys.mk,v 1.62 2025/05/19 19:15:22 sjg Exp $
# #
# @(#) Copyright (c) 2003-2023, Simon J. Gerraty # @(#) Copyright (c) 2003-2023, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+26 -10
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: sys.vars.mk,v 1.24 2025/11/19 17:44:15 sjg Exp $
#
# $Id: sys.vars.mk,v 1.18 2025/03/09 02:47:59 sjg Exp $
# #
# @(#) Copyright (c) 2003-2023, Simon J. Gerraty # @(#) Copyright (c) 2003-2023, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
@@ -37,6 +30,22 @@ _this = ${.PARSEDIR}/${.PARSEFILE}
_this = ${.PARSEDIR:tA}/${.PARSEFILE} _this = ${.PARSEDIR:tA}/${.PARSEFILE}
.endif .endif
# This is a boolean we can use in makefiles as below
.ifndef MAKE_POSIX_SHELL
MAKE_POSIX_SHELL != (echo $${PATH%:*}) > /dev/null 2>&1 && echo 1 || echo 0
.export MAKE_POSIX_SHELL
.endif
# This is a boolean we can use in target scripts
.ifndef isPOSIX_SHELL
.if ${MAKE_POSIX_SHELL}
isPOSIX_SHELL = :
.else
isPOSIX_SHELL = false
.endif
.export isPOSIX_SHELL
.endif
# some useful modifiers # some useful modifiers
# A useful trick for testing multiple :M's against something # A useful trick for testing multiple :M's against something
@@ -56,8 +65,15 @@ M_ListToSkip= O:u:S,^,N,:ts:
_type_sh = which _type_sh = which
.endif .endif
# :sh1 evaluates command only once and caches the result.
.if ${MAKE_VERSION} < 20251111
M_sh1 = sh
.else
M_sh1 = sh1
.endif
# AUTOCONF := ${autoconf:L:${M_whence}} # AUTOCONF := ${autoconf:L:${M_whence}}
M_type = @x@(${_type_sh:Utype} $$x) 2> /dev/null; echo;@:sh:[0]:N* found*:[@]:C,[()],,g M_type = @x@(${_type_sh:Utype} $$x) 2> /dev/null; echo;@:${M_sh1:Ush}:[0]:N* found*:[@]:C,[()],,g
M_whence = ${M_type}:M/*:[1] M_whence = ${M_type}:M/*:[1]
# produce similar output to jot(1) or seq(1) # produce similar output to jot(1) or seq(1)
+2 -11
View File
@@ -34,21 +34,12 @@
# #
# Only works with a make(1) that does nested evaluation correctly. # Only works with a make(1) that does nested evaluation correctly.
# SPDX-License-Identifier: BSD-2-Clause
#
# RCSid: # RCSid:
# $Id: target-flags.mk,v 1.11 2024/02/17 17:26:57 sjg Exp $ # $Id: target-flags.mk,v 1.12 2025/08/09 22:42:24 sjg Exp $
# #
# @(#) Copyright (c) 1998-2002, Simon J. Gerraty # @(#) Copyright (c) 1998-2002, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -10
View File
@@ -1,16 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: warnings.mk,v 1.19 2025/08/09 22:42:24 sjg Exp $
#
# RCSid:
# $Id: warnings.mk,v 1.18 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2002-2023, Simon J. Gerraty # @(#) Copyright (c) 2002-2023, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -9
View File
@@ -1,15 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: whats.mk,v 1.13 2025/08/09 22:42:24 sjg Exp $
#
# $Id: whats.mk,v 1.12 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 2014-2020, Simon J. Gerraty # @(#) Copyright (c) 2014-2020, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -10
View File
@@ -1,16 +1,8 @@
# SPDX-License-Identifier: BSD-2-Clause # $Id: yacc.mk,v 1.10 2025/08/09 22:42:24 sjg Exp $
#
# $Id: yacc.mk,v 1.9 2024/02/17 17:26:57 sjg Exp $
# #
# @(#) Copyright (c) 1999-2011, Simon J. Gerraty # @(#) Copyright (c) 1999-2011, Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+2 -7
View File
@@ -17,16 +17,11 @@
# Simon J. Gerraty <sjg@crufty.net> # Simon J. Gerraty <sjg@crufty.net>
# RCSid: # RCSid:
# $Id: os.sh,v 1.67 2025/02/13 21:04:34 sjg Exp $ # $Id: os.sh,v 1.68 2025/08/07 21:59:54 sjg Exp $
# #
# @(#) Copyright (c) 1994 Simon J. Gerraty # @(#) Copyright (c) 1994 Simon J. Gerraty
# #
# This file is provided in the hope that it will # SPDX-License-Identifier: BSD-2-Clause
# be of use. There is absolutely NO WARRANTY.
# Permission to copy, redistribute or otherwise
# use this file is hereby granted provided that
# the above copyright notice and this notice are
# left intact.
# #
# Please send copies of changes and bug-fixes to: # Please send copies of changes and bug-fixes to:
# sjg@crufty.net # sjg@crufty.net
+3 -11
View File
@@ -104,24 +104,16 @@
* Simon J. Gerraty <sjg@crufty.net> * Simon J. Gerraty <sjg@crufty.net>
*/ */
/* COPYRIGHT: /* COPYRIGHT:
* @(#)Copyright (c) 1992-2021, Simon J. Gerraty * @(#)Copyright (c) 1992-2025, Simon J. Gerraty
* *
* This is free software. It comes with NO WARRANTY. * SPDX-License-Identifier: BSD-2-Clause
* Permission to use, modify and distribute this source code
* is granted subject to the following conditions.
* 1/ that that the above copyright notice and this notice
* are preserved in all copies and that due credit be given
* to the author.
* 2/ that any changes to this code are clearly commented
* as such so that the author does get blamed for bugs
* other than his own.
* *
* Please send copies of changes and bug-fixes to: * Please send copies of changes and bug-fixes to:
* sjg@crufty.net * sjg@crufty.net
* *
*/ */
#ifndef lint #ifndef lint
static char *RCSid = "$Id: sigact.c,v 1.8 2021/10/14 19:39:17 sjg Exp $"; static char *RCSid = "$Id: sigact.c,v 1.9 2025/08/09 22:11:45 sjg Exp $";
#endif #endif
#undef _ANSI_SOURCE /* causes problems */ #undef _ANSI_SOURCE /* causes problems */
+3 -11
View File
@@ -37,17 +37,9 @@
* Simon J. Gerraty <sjg@crufty.net> * Simon J. Gerraty <sjg@crufty.net>
*/ */
/* /*
* @(#)Copyright (c) 1994, Simon J. Gerraty. * @(#)Copyright (c) 1994-2025, Simon J. Gerraty.
* *
* This is free software. It comes with NO WARRANTY. * SPDX-License-Identifier: BSD-2-Clause
* Permission to use, modify and distribute this source code
* is granted subject to the following conditions.
* 1/ that the above copyright notice and this notice
* are preserved in all copies and that due credit be given
* to the author.
* 2/ that any changes to this code are clearly commented
* as such so that the author does not get blamed for bugs
* other than his own.
* *
* Please send copies of changes and bug-fixes to: * Please send copies of changes and bug-fixes to:
* sjg@crufty.net * sjg@crufty.net
@@ -104,7 +96,7 @@
#if defined(LIBC_SCCS) && !defined(lint) #if defined(LIBC_SCCS) && !defined(lint)
/*static char *sccsid = "from: @(#)sigcompat.c 5.3 (Berkeley) 2/24/91";*/ /*static char *sccsid = "from: @(#)sigcompat.c 5.3 (Berkeley) 2/24/91";*/
static char *rcsid = "$Id: sigcompat.c,v 1.24 2022/09/26 17:38:10 sjg Exp $"; static char *rcsid = "$Id: sigcompat.c,v 1.25 2025/08/09 22:11:45 sjg Exp $";
#endif /* LIBC_SCCS and not lint */ #endif /* LIBC_SCCS and not lint */
#undef signal #undef signal
+25 -6
View File
@@ -1,6 +1,6 @@
# $Id: Makefile,v 1.245 2025/08/05 16:18:07 sjg Exp $ # $Id: Makefile,v 1.251 2025/11/15 17:17:18 sjg Exp $
# #
# $NetBSD: Makefile,v 1.372 2025/08/04 22:44:49 sjg Exp $ # $NetBSD: Makefile,v 1.373 2025/11/12 22:14:08 sjg Exp $
# #
# Unit tests for make(1) # Unit tests for make(1)
# #
@@ -403,6 +403,7 @@ TESTS+= varmod-shell
TESTS+= varmod-subst TESTS+= varmod-subst
TESTS+= varmod-subst-regex TESTS+= varmod-subst-regex
TESTS+= varmod-sun-shell TESTS+= varmod-sun-shell
TESTS+= varmod-sun-shell1
TESTS+= varmod-sysv TESTS+= varmod-sysv
TESTS+= varmod-tail TESTS+= varmod-tail
TESTS+= varmod-to-abs TESTS+= varmod-to-abs
@@ -519,6 +520,14 @@ BROKEN_TESTS+= \
.endif .endif
.if ${.MAKE.OS:NMINGW*} == ""
BROKEN_TESTS+= \
cmdline \
objdir-writable \
varname-dot-make-level \
.endif
.if ${.MAKE.OS} == "SCO_SV" .if ${.MAKE.OS} == "SCO_SV"
BROKEN_TESTS+= \ BROKEN_TESTS+= \
opt-debug-graph[23] \ opt-debug-graph[23] \
@@ -594,8 +603,12 @@ SED_CMDS.directive-include-guard= \
-e '/^ParseEOF:/d' -e '/^ParseEOF:/d'
SED_CMDS.export= -e '/^[^=_A-Za-z0-9]*=/d' SED_CMDS.export= -e '/^[^=_A-Za-z0-9]*=/d'
SED_CMDS.export+= -e '/^DIFF/d' SED_CMDS.export+= -e '/^DIFF/d'
.if ${.MAKE.OS:NCygwin} == "" .if ${.MAKE.OS:NCygwin:NMINGW*} == ""
SED_CMDS.export+= -e '/^WINDIR=/d' -e '/^SYSTEMROOT=/d' SED_CMDS.export+= \
-e '/MSYSTEM=/d' \
-e '/^SYSTEMROOT=/d' \
-e '/^WINDIR=/d' \
.endif .endif
SED_CMDS.export-all= ${SED_CMDS.export} SED_CMDS.export-all= ${SED_CMDS.export}
SED_CMDS.export-env= ${SED_CMDS.export} SED_CMDS.export-env= ${SED_CMDS.export}
@@ -847,6 +860,12 @@ _SED_CMDS+= -e 's,${.CURDIR},<curdir>,g'
# which we get depending on how MAKEOBJDIR is set. # which we get depending on how MAKEOBJDIR is set.
_SED_CMDS+= -e 's,${.OBJDIR},<curdir>,g' -e 's,${.OBJDIR:tA},<curdir>,g' _SED_CMDS+= -e 's,${.OBJDIR},<curdir>,g' -e 's,${.OBJDIR:tA},<curdir>,g'
.endif .endif
# At the end, make sure we cleanup any dregs...
.for d in ${MAKEOBJDIRPREFIX:S,/$,,} /usr/obj
_SED_CMDS_LAST+= -e 's,$d,,'
.endfor
# always pretend .MAKE was called 'make' # always pretend .MAKE was called 'make'
_SED_CMDS+= -e 's,^${TEST_MAKE:T:S,.,\\.,g}[][0-9]*:,make:,' _SED_CMDS+= -e 's,^${TEST_MAKE:T:S,.,\\.,g}[][0-9]*:,make:,'
_SED_CMDS+= -e 's,${TEST_MAKE:S,.,\\.,g},make,' _SED_CMDS+= -e 's,${TEST_MAKE:S,.,\\.,g},make,'
@@ -868,7 +887,7 @@ SED_CMDS.opt-debug-jobs+= -e 's,Command: <shell> -v,Command: <shell>,'
.endif .endif
.rawout.out: .rawout.out:
@${TOOL_SED} ${_SED_CMDS} ${SED_CMDS.${.PREFIX:T}} \ @${TOOL_SED} ${_SED_CMDS} ${SED_CMDS.${.PREFIX:T}} ${_SED_CMDS_LAST} \
< ${.IMPSRC} > ${.TARGET}.tmp < ${.IMPSRC} > ${.TARGET}.tmp
@${POSTPROC.${.PREFIX:T}:D \ @${POSTPROC.${.PREFIX:T}:D \
${POSTPROC.${.PREFIX:T}} < ${.TARGET}.tmp > ${.TARGET}.post \ ${POSTPROC.${.PREFIX:T}} < ${.TARGET}.tmp > ${.TARGET}.post \
@@ -895,7 +914,7 @@ test: ${OUTFILES} .PHONY
echo "Failed tests: $${failed}" ; false ; \ echo "Failed tests: $${failed}" ; false ; \
else \ else \
echo "All tests passed" ; \ echo "All tests passed" ; \
lua=${LUA:Ulua} ; \ lua=${LUA} ; lua=$${lua:-lua}; \
have_lua=$$("$$lua" -e 'print "yes"' 2>&1) ; \ have_lua=$$("$$lua" -e 'print "yes"' 2>&1) ; \
if [ "$$have_lua" = "yes" -a -s ${.CURDIR}/check-expect.lua ]; then \ if [ "$$have_lua" = "yes" -a -s ${.CURDIR}/check-expect.lua ]; then \
(cd ${.CURDIR} && "$$lua" ./check-expect.lua *.mk); \ (cd ${.CURDIR} && "$$lua" ./check-expect.lua *.mk); \
+5 -4
View File
@@ -1,7 +1,8 @@
# $Id: Makefile.config.in,v 1.4 2022/09/09 18:44:56 sjg Exp $ # $Id: Makefile.config.in,v 1.5 2025/10/22 23:20:41 sjg Exp $
srcdir= @srcdir@
EGREP= @egrep@
TOOL_DIFF?= @diff@
DIFF_FLAGS?= @diff_u@ DIFF_FLAGS?= @diff_u@
EGREP= @egrep@
LUA?= @lua@
TOOL_DIFF?= @diff@
UTC_1= @UTC_1@ UTC_1= @UTC_1@
srcdir= @srcdir@
+1 -1
View File
@@ -18,7 +18,7 @@
# Errors that are not related to opening the file are still reported. # Errors that are not related to opening the file are still reported.
# expect: make: directive-dinclude-error.inc:1: Invalid line "syntax error" # expect: make: directive-dinclude-error.inc:1: Invalid line "syntax error"
_!= echo 'syntax error' > directive-dinclude-error.inc _!= echo 'syntax error' > directive-dinclude-error.inc
.dinclude "${.CURDIR}/directive-dinclude-error.inc" .dinclude "${.OBJDIR}/directive-dinclude-error.inc"
_!= rm directive-dinclude-error.inc _!= rm directive-dinclude-error.inc
all: .PHONY all: .PHONY
+1 -1
View File
@@ -17,7 +17,7 @@
# Errors that are not related to opening the file are still reported. # Errors that are not related to opening the file are still reported.
# expect: make: directive-hyphen-include-error.inc:1: Invalid line "syntax error" # expect: make: directive-hyphen-include-error.inc:1: Invalid line "syntax error"
_!= echo 'syntax error' > directive-hyphen-include-error.inc _!= echo 'syntax error' > directive-hyphen-include-error.inc
.-include "${.CURDIR}/directive-hyphen-include-error.inc" .-include "${.OBJDIR}/directive-hyphen-include-error.inc"
_!= rm directive-hyphen-include-error.inc _!= rm directive-hyphen-include-error.inc
all: .PHONY all: .PHONY
+2 -2
View File
@@ -636,9 +636,9 @@ LINES.multiline= \
_:= ${fname:H:N.:@dir@${:!mkdir -p ${dir}!}@} _:= ${fname:H:N.:@dir@${:!mkdir -p ${dir}!}@}
_!= printf '%s\n' ${LINES.$i} > ${fname} _!= printf '%s\n' ${LINES.$i} > ${fname}
.MAKEFLAGS: -dp .MAKEFLAGS: -dp
.include "${.CURDIR}/${fname}" .include "${.OBJDIR}/${fname}"
.undef ${UNDEF_BETWEEN.$i:U} .undef ${UNDEF_BETWEEN.$i:U}
.include "${.CURDIR}/${fname}" .include "${.OBJDIR}/${fname}"
.MAKEFLAGS: -d0 .MAKEFLAGS: -d0
_!= rm ${fname} _!= rm ${fname}
_:= ${fname:H:N.:@dir@${:!rmdir ${dir}!}@} _:= ${fname:H:N.:@dir@${:!rmdir ${dir}!}@}
+1 -1
View File
@@ -82,7 +82,7 @@ include
# Buf_InitSize, which assumes that bmake_malloc never returns NULL, just like # Buf_InitSize, which assumes that bmake_malloc never returns NULL, just like
# all other places in the code. # all other places in the code.
_!= > directive-include-empty _!= > directive-include-empty
.include "${.CURDIR}/directive-include-empty" .include "${.OBJDIR}/directive-include-empty"
_!= rm directive-include-empty _!= rm directive-include-empty
+1 -1
View File
@@ -17,7 +17,7 @@
# Errors that are not related to opening the file are still reported. # Errors that are not related to opening the file are still reported.
# expect: make: directive-include-error.inc:1: Invalid line "syntax error" # expect: make: directive-include-error.inc:1: Invalid line "syntax error"
_!= echo 'syntax error' > directive-include-error.inc _!= echo 'syntax error' > directive-include-error.inc
.sinclude "${.CURDIR}/directive-include-error.inc" .sinclude "${.OBJDIR}/directive-include-error.inc"
_!= rm directive-include-error.inc _!= rm directive-include-error.inc
all: .PHONY all: .PHONY
+1 -1
View File
@@ -1,4 +1,4 @@
make: opt-debug-file.mk:54: This goes to stderr only, once. make: opt-debug-file.mk:54: This goes to stdout only, once.
make: opt-debug-file.mk:57: This goes to stderr only, once. make: opt-debug-file.mk:57: This goes to stderr only, once.
make: opt-debug-file.mk:60: This goes to stderr, and in addition to the debug log. make: opt-debug-file.mk:60: This goes to stderr, and in addition to the debug log.
CondParser_Eval: ${:!cat opt-debug-file.debuglog!:Maddition:[#]} != 1 CondParser_Eval: ${:!cat opt-debug-file.debuglog!:Maddition:[#]} != 1
+3 -3
View File
@@ -1,4 +1,4 @@
# $NetBSD: opt-debug-file.mk,v 1.12 2025/07/06 08:48:34 rillig Exp $ # $NetBSD: opt-debug-file.mk,v 1.13 2025/08/09 23:09:55 rillig Exp $
# #
# Tests for the -dF command line option, which redirects the debug log # Tests for the -dF command line option, which redirects the debug log
# to a file instead of writing it to stderr. # to a file instead of writing it to stderr.
@@ -50,8 +50,8 @@ DEBUG_OUTPUT:= ${:!cat opt-debug-file.debuglog!:S,\$,\$\$,g}
# See Parse_Error. # See Parse_Error.
.MAKEFLAGS: -dFstdout .MAKEFLAGS: -dFstdout
# expect+1: This goes to stderr only, once. # expect+1: This goes to stdout only, once.
. info This goes to stderr only, once. . info This goes to stdout only, once.
.MAKEFLAGS: -dFstderr .MAKEFLAGS: -dFstderr
# expect+1: This goes to stderr only, once. # expect+1: This goes to stderr only, once.
. info This goes to stderr only, once. . info This goes to stderr only, once.
+14
View File
@@ -0,0 +1,14 @@
Global: _ = # (empty)
Var_Parse: ${THE_ANSWER} (eval-keep-dollar-and-undefined)
Var_Parse: ${ANSWER:sh1} (eval-keep-dollar-and-undefined)
Evaluating modifier ${ANSWER:s...} on value "echo 42; (exit 13)" (eval-keep-dollar-and-undefined, regular)
Capturing the output of command "echo 42; (exit 13)"
Global: ignoring delete '.SHELL' as it is not found
Command: .SHELL = /bin/sh
make: varmod-sun-shell1.mk:17: warning: Command "echo 42; (exit 13)" exited with status 13
Global: .MAKE.SH1.ANSWER = 42
Result of ${ANSWER:sh1} is "42" (eval-keep-dollar-and-undefined, regular)
Global: _ = 42
Global: .MAKEFLAGS = -r -k -d v -d
Global: .MAKEFLAGS = -r -k -d v -d 0
exit status 0
+25
View File
@@ -0,0 +1,25 @@
# $NetBSD: varmod-sun-shell1.mk,v 1.1 2025/11/12 22:14:08 sjg Exp $
#
# Tests for the :sh1 variable modifier, which runs the shell command
# given by the variable value only on first reference and caches its output.
#
# This modifier has been added on 2025-11-11
#
# See also:
# ApplyModifier_SunShell1
ANSWER= echo 42; (exit 13)
THE_ANSWER= ${ANSWER:sh1}
# first reference will warn
.MAKEFLAGS: -dv # to see the "Capturing" debug output
# expect+1: warning: Command "echo 42; (exit 13)" exited with status 13
_:= ${THE_ANSWER}
.MAKEFLAGS: -d0
# subsequent references will not, since we do not execute a command
.if ${THE_ANSWER} != "42"
. error
.endif
all:
+3 -1
View File
@@ -1,7 +1,9 @@
# $NetBSD: varname-circumflex.mk,v 1.1 2025/06/27 20:20:56 rillig Exp $ # $NetBSD: varname-circumflex.mk,v 1.2 2025/08/09 23:13:29 rillig Exp $
# #
# Tests for the target-local variable "^", which is required by POSIX 2024 # Tests for the target-local variable "^", which is required by POSIX 2024
# and provided by GNU make. # and provided by GNU make.
#
# https://gnats.netbsd.org/59018
# TODO: Support $^. # TODO: Support $^.
+43 -3
View File
@@ -1,4 +1,4 @@
/* $NetBSD: var.c,v 1.1171 2025/06/29 11:02:17 rillig Exp $ */ /* $NetBSD: var.c,v 1.1173 2025/11/12 22:14:07 sjg Exp $ */
/* /*
* Copyright (c) 1988, 1989, 1990, 1993 * Copyright (c) 1988, 1989, 1990, 1993
@@ -143,7 +143,7 @@
#endif #endif
/* "@(#)var.c 8.3 (Berkeley) 3/19/94" */ /* "@(#)var.c 8.3 (Berkeley) 3/19/94" */
MAKE_RCSID("$NetBSD: var.c,v 1.1171 2025/06/29 11:02:17 rillig Exp $"); MAKE_RCSID("$NetBSD: var.c,v 1.1173 2025/11/12 22:14:07 sjg Exp $");
/* /*
* Variables are defined using one of the VAR=value assignments. Their * Variables are defined using one of the VAR=value assignments. Their
@@ -1866,7 +1866,7 @@ QuoteShell(const char *str, bool quoteDollar, LazyBuf *buf)
static char * static char *
Hash(const char *str) Hash(const char *str)
{ {
static const char hexdigits[16] = "0123456789abcdef"; static const char hexdigits[] = "0123456789abcdef";
const unsigned char *ustr = (const unsigned char *)str; const unsigned char *ustr = (const unsigned char *)str;
uint32_t h = 0x971e137bU; uint32_t h = 0x971e137bU;
@@ -3810,6 +3810,44 @@ ApplyModifier_SunShell(const char **pp, ModChain *ch)
return AMR_OK; return AMR_OK;
} }
/* :sh1 */
static ApplyModifierResult
ApplyModifier_SunShell1(const char **pp, ModChain *ch)
{
Expr *expr = ch->expr;
const char *p = *pp;
if (!(p[1] == 'h' && p[2] == '1' && IsDelimiter(p[3], ch)))
return AMR_UNKNOWN;
*pp = p + 3;
if (Expr_ShouldEval(expr)) {
char *cache_varname;
Var *v;
cache_varname = str_concat2(".MAKE.SH1.", expr->name);
v = VarFind(cache_varname, SCOPE_GLOBAL, false);
if (v == NULL) {
char *output, *error;
output = Cmd_Exec(Expr_Str(expr), &error);
if (error != NULL) {
Parse_Error(PARSE_WARNING, "%s", error);
free(error);
}
Var_SetWithFlags(SCOPE_GLOBAL, cache_varname, output,
VAR_SET_NO_EXPORT);
Expr_SetValueOwn(expr, output);
} else {
Expr_SetValueRefer(expr, v->val.data);
}
free(cache_varname);
}
return AMR_OK;
}
/* /*
* In cases where the evaluation mode and the definedness are the "standard" * In cases where the evaluation mode and the definedness are the "standard"
* ones, don't log them, to keep the logs readable. * ones, don't log them, to keep the logs readable.
@@ -3925,6 +3963,8 @@ ApplyModifier(const char **pp, ModChain *ch)
case 'S': case 'S':
return ApplyModifier_Subst(pp, ch); return ApplyModifier_Subst(pp, ch);
case 's': case 's':
if ((*pp)[1] == 'h' && (*pp)[2] == '1')
return ApplyModifier_SunShell1(pp, ch);
return ApplyModifier_SunShell(pp, ch); return ApplyModifier_SunShell(pp, ch);
case 'T': case 'T':
return ApplyModifier_WordFunc(pp, ch, ModifyWord_Tail); return ApplyModifier_WordFunc(pp, ch, ModifyWord_Tail);
+3 -11
View File
@@ -6,19 +6,11 @@
*/ */
/* /*
* RCSid: * RCSid:
* $Id: wait.h,v 1.6 2002/11/26 07:53:06 sjg Exp $ * $Id: wait.h,v 1.7 2025/08/09 22:11:45 sjg Exp $
* *
* @(#)Copyright (c) 1994, Simon J. Gerraty. * @(#)Copyright (c) 1994-2025, Simon J. Gerraty.
* *
* This is free software. It comes with NO WARRANTY. * SPDX-License-Identifier: BSD-2-Clause
* Permission to use, modify and distribute this source code
* is granted subject to the following conditions.
* 1/ that the above copyright notice and this notice
* are preserved in all copies and that due credit be given
* to the author.
* 2/ that any changes to this code are clearly commented
* as such so that the author does not get blamed for bugs
* other than his own.
* *
* Please send copies of changes and bug-fixes to: * Please send copies of changes and bug-fixes to:
* sjg@crufty.net * sjg@crufty.net