Intersting/relevant changes since bmake-20251111
ChangeLog since bmake-20251111
2026-03-12 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20260313
Merge with NetBSD make, pick up
o make: ensure .MAKE.SAVE_DOLLARS is initialized so makefiles like
sys.vars.mk can test its value to know how to deal with macros
that need to save '$' during ':='.
* Makefile: default MAKE_SAVE_DOLLARS_DEFAULT to "no"
for traditional behavior.
2026-03-10 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20260310
Merge with NetBSD make, pick up
o unit-tests ensure TEST_MAKE is absolute path
and tests that make symlink for ${MAKE} can run in parallel.
2026-03-03 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20260303
Merge with NetBSD make, pick up
o job.c: MaybeSubMake: Look for expansion of ${.MAKE}
and if necessary its basename, and only match if at start of line
or preceded by space.
2026-02-28 Simon J Gerraty <sjg@beast.crufty.net>
* Makefile: mark ${PROG} and ${OBJS} as .META
MaybeSubMake will otherwise mistake them for sub-makes
* VERSION (_MAKE_VERSION): 20260301
Merge with NetBSD make, pick up
o job.c: MaybeSubMake: skip control chars [@+-] at start of line
when checking for ${MAKE}
2026-02-22 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20260222
o mk file update
2026-02-16 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20260216
Merge with NetBSD make, pick up
o minor cleanups
2026-02-10 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20260210
Merge with NetBSD make, pick up
o document that multiple variables can be set on command line.
o move MaybeSubMake to job.c so it can be called on expanded
commands for more accuracy and less overhead.
o main.c: set .MAKE.VERSION as read-only.
* unit-tests/opt-{chdir,where-am-i}.mk: use MAKEOBJDIRPREFIX=/
to avoid tripping over an unreadable /usr/obj
2026-02-04 Simon J Gerraty <sjg@beast.crufty.net>
* unit-tests/varname-make_stack_trace.mk: for
FreeBSD and similar set .MAKE.ALWAYS_PASS_JOB_QUEUE=no
to ensure we get the expected errors.
* VERSION (_MAKE_VERSION): 20260202
Merge with NetBSD make, pick up
o on error avoid duplicate stack trace to stderr
2026-01-11 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20260111
Merge with NetBSD make, pick up
o var.c: add explicit check for empty re as not all
regex libs throw an error as expected, in this case.
2026-01-10 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20260110
Merge with NetBSD make, pick up
o minor cleanups
mk/ChangeLog since bmake-20251111
2026-03-12 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20260313
* sys.vars.mk: use .MAKE.VERSION
M_type can simply use '$x'
2026-02-22 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20260222
* dirdeps.mk, sys.mk: add dependent option
UPDATE_DIRDEPS_CACHE/DIRDEPS_CACHE.
It can be useful to use -DWITHOUT_UPDATE_DIRDEPS_CACHE to
temporarily treat dynamic DIRDEPS_CACHE as static.
2026-01-10 Simon J Gerraty <sjg@beast.crufty.net>
* meta.autodep.mk (${_DEPENDFILE}): add .NOMETA
2026-01-08 Simon J Gerraty <sjg@beast.crufty.net>
* rust.mk: better accommodation for RUST_LIBS.
Set RUST_{LIBS,PROGS}_CARGO_BUILD_OUTPUT_LIST to
simplify staging.
2025-12-08 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20251207
* sys.vars.mk: replace MAKE_POSIX_SHELL usage with isPOSIX_SHELL
Using ${isPOSIX_SHELL:U:Nfalse} provides a boolean for make
and ${isPOSIX_SHELL:Ufalse} does the same for target scripts.
Both will be false if isPOSIX_SHELL is not set or set to false.
This has the advantage that if only POSIX shells are expected
sys.mk (or something it includes) can simply do isPOSIX_SHELL?=:
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
Intersting/relevant changes since bmake-20250707
ChangeLog since bmake-20250707
2025-08-04 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250804
Merge with NetBSD make, pick up
o meta.c: allow printing only partial string to meta file
in jobs mode, otherwise we end up with duplicated output when
buffer does not end in newline.
Add a suitable unit test.
mk/ChangeLog since bmake-20250707
2025-07-24 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20250724
* meta2deps: Allow X record to have 3 or 4 args.
V4 filemon on Linux produces 3
V5 filemon on FreeBSD produces 4
2025-07-22 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20250721
* meta2deps.{py,sh}: detect corrupted filemon output (an issue on
Linux) by checking each record type has the correct number of
words. Throw an error if necessary so that gendirdeps.mk will not
update Makefile.depend
Intersting/relevant changes since bmake-20250414
ChangeLog since bmake-20250414
2025-06-18 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250618
Merge with NetBSD make, pick up
o parse.c: in a warning without location information,
print the stack trace
2025-06-15 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250615
Merge with NetBSD make, pick up
o add on-demand inter-process stack traces
o job.c,meta.c: do not discard empty lines in the output of a command
o job.c: add job prefix if necessary in non-default filtered mode
o parse.c,var.c: skip inter-process stack trace when
MAKE_STACK_TRACE=no
2025-06-12 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250612
Merge with NetBSD make, pick up
o use a common style for unexpected error messages
o parse.c: add program name to stack traces from sub-makes
add quotes to "in directory" line in stack traces
o var.c: check variable names for invalid characters when there
are no modifiers to apply. This detects and warns about gmake
syntax like: $(addprefix -I, $(LIST))
2025-06-09 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250606
Merge with NetBSD make, pick up
o main.c: fix bug in handling of output of children in jobs mode
2025-05-28 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250528
Merge with NetBSD make, pick up
o show contents of MAKEFLAGS in the stack trace.
o main.c: delay warning about bogus -J flag, if we end up in
compat mode before the call to InitMaxJobs, the warning isn't
necessary.
2025-05-25 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250525
Merge with NetBSD make, pick up
o main.c: set .CURDIR earlier so it can be reported in some errors.
2025-05-20 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250520
Merge with NetBSD make, pick up
o rename variables, remove now-redundant comments
o job.c: clean up building the shell commands in parallel mode
remove timeout for polling in parallel mode
o main.c: clean up error message for malformed internal -J option
2025-05-11 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250511
Merge with NetBSD make, pick up
o job.c: rename token pool variables to be more descriptive
move ContinueJobs further up, to eliminate a forward declaration
error out if writing to an internal pipe fails
clean up constant names and function names
use uniform debug log messages for the token pool
in the debug log, replace magic numbers with identifiers
o main.c: clean up error message for malformed internal -J option
o make.c: replace bitset in trace output with descriptive node
attributes
o targ.c: add end marker for -dg1, -dg2 and -dg3 debug log
o var.c: fix order of error messages in the ":?" modifier
2025-04-25 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250424
Merge with NetBSD make, pick up
o cleanup; replace unsigned int with just unsigned
Inline the TMPPAT macro, as it is only needed in a single place
o move struct Job from job.h to job.c
o job.c: group the code for handling the job token pool
avoid excessive values of -j
o make.c: fix grammar in debug log message
mk/ChangeLog since bmake-20250414
2025-05-28 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20250528
* add dirdeps2dplibs.mk
2025-05-18 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20250518
* meta.autodep.mk (META_FILES): re-work to fix filtering.
if OPTIMIZE_OBJECT_META_FILES==yes
provide a default META_FILE_OBJ_FILTER that selects a valid
.SUFFIX to match *o.meta, there's no guarantee that it will be as
simple as .o or .So etc.
We have to defer evaluation until the target script is run
for any of these filters to have any effect.
Use :S,${.OBJDIR}/,, rather than :T incase there are objects
in sub-dirs.
* lib.mk: leverage ${.SUFFIXES} when setting dependencies.
* add UPDATE_DEPENDFILE as a dependent option - follows
DIRDEPS_BUILD and use MK_UPDATE_DEPENDFILE as default for
UPDATE_DEPENDFILE when we think it should be yes.
This allows override with -DWITH[OUT]_UPDATE_DEPENDFILE
without overriding UPDATE_DEPENDFILE directly - which can lead to
trouble.
2025-05-16 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20250515
* meta2deps.py: resolve the target of a Move or Link first
and track the last path resolved, then if the src is a relative
path we can easily use that last path to resolve the src correctly.
* meta2deps.sh: for a Move or Link add the dir of target path to
the list used to resolve the src path.
Intersting/relevant changes since bmake-20250308
ChangeLog since bmake-20250308
2025-04-14 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250414
Merge with NetBSD make, pick up
o job.c: clean up job and output handling
o parse.c: after entering POSIX mode, don't leave it again
2025-04-11 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250411
Merge with NetBSD make, pick up
o convert more messages to file:line: format
o for.c: condense code for parsing variable names in .for loops
2025-04-10 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250410
Merge with NetBSD make, pick up
o cond.c: remove redundant error counter when parsing a condition
2025-04-04 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250404
Merge with NetBSD make, pick up
o make.1: better document meta mode.
o var.c: fix error message for undefined variable in conditional.
2025-03-30 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250330
Merge with NetBSD make, pick up
o in POSIX compatability mode, give preference to sysV style modifiers.
o in stack trace with details and includes, list the current file
o parse.c: report file location in more common file:line: format.
o var.c: simplify error handling for unknown modifiers
let the ":O" and ":t" modifiers fall back to the ":from=to" modifier
stop parsing after seeing an unknown modifier in an expression
fix error message for unclosed expression and invalid :[...]
add details to errors about ::= modifier
add details about indirect modifiers to the stack traces
in stack traces from target commands, add the command level
2025-03-23 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250323
Merge with NetBSD make, pick up
o var.c: just ignore attempts to override a read-only global with
the same value.
mk/ChangeLog since bmake-20250308
2025-04-18 Simon J Gerraty <sjg@beast.crufty.net>
* init.mk: include Skipping ${RELDIR} when _SKIP_BUILD is not empty.
2025-04-14 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20250414
* init.mk: check ONLY_*_LIST and NOT_*_LIST for SKIP_BUILD_VAR_LIST
to set _SKIP_BUILD
* genfiles.mk: add FILTER support
* rst2htm.mk: latest docutils drops .py extensions
2025-03-26 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20250326
* auto.obj.mk: fix and simplify handling of relative __objdir,
convert it to absolute before checking against .OBJDIR
Intersting/relevant changes since bmake-20250125
ChangeLog since bmake-20250125
2025-03-08 Simon J Gerraty <sjg@beast.crufty.net>
* bsd.after-import.mk: by default generate makefiles
closer to BSD style.
* VERSION (_MAKE_VERSION): 20250308
Merge with NetBSD make, pick up
o clean up comments and code for parallel mode
o job.c: avoid SIGPIPE for children, call Job_Wait befor abort.
2025-02-27 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250225
Merge with NetBSD make, pick up
o job.c: reliably remove targets on interrupt,
by passing signal to children first.
mk/ChangeLog since bmake-20250125
2025-03-14 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20250314
* meta.stage.mk: StageFiles --subdir: preserve the dir part of
each file under $dest
2025-03-12 Simon J Gerraty <sjg@beast.crufty.net>
* meta.autodep.mk: do a better job of handling MAKESYSPATH in
GENDIRDEPS_ENV. If we have MAKE_VERSION >= 20230123 we can just
use .SYSPATH, otherwise it is a bit more complicated.
Intersting/relevant changes since bmake-20240711
ChangeLog since bmake-20240711
2025-01-25 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250125
Merge with NetBSD make, sync up below change.
* unit-tests/Makefile: remove $TMPDIR via .END
to avoid failure in test on NFS - since the temp file for the
target script is open and thus gets renamed by the server rather
than removed.
2025-01-20 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250120
Merge with NetBSD make, pick up
o use FORK_FUNCTION so it can be forced to fork when doing coverage.
o main.c: avoid memory allocation in error path after exec failure.
2025-01-16 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250116
Merge with NetBSD make, pick up
o clarify that undefined expressions are allowed in dependencies
o simplify code for evaluating the '!=' variable assignment
2025-01-11 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250111
Merge with NetBSD make, pick up
o replace "Malformed conditional" with "Variable is undefined"
when appropriate
2025-01-10 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250110
Merge with NetBSD make, pick up
o job.c: remove some unnecessary layers in job handling
o unit-tests: test expressions based on undefined variables
2025-01-01 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20250101
Merge with NetBSD make, pick up
o var.c: reduce pointer indirections when unexporting a variable
2024-12-12 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20241212
* mk/ updates
2024-11-24 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20241124
Merge with NetBSD make, pick up
o var.c: fix confusing error message when overriding a read-only
variable
2024-11-22 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20241122
Merge with NetBSD make, pick up
o unit-tests/Makefile: optimize running of tests skip extra cat
in 99% of cases.
2024-11-15 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20241114
Merge with NetBSD make, pick up
o make.1: note that MAKEOBJPREFIX should be absolute path
also that it can be set via makefile if suitable care taken.
2024-11-10 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20241110
Merge with NetBSD make, pick up
o make: allow .../ (search here and above) in
.MAKE.MAKEFILE_PREFERENCE and -f argument.
2024-11-03 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20241101
Merge with NetBSD make, pick up
o parse.c: report filename:linenumber in parse debug output
2024-09-21 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240921
Merge with NetBSD make, pick up
o make.1: Only list the defaults for MAKEFILE_PREFERENCE once.
* Makefile: use genfiles.mk to generate ${MAN}
so that it can be tuned for local site.
Ensure MAN is defined before including Makefile.inc
* Makefile: use MK_GEN_MAN to make it easier to control whether we
generate ${MAN}
2024-09-16 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240909
* arch.c: fix NetBSD PR 58597
2024-09-01 Simon J Gerraty <sjg@beast.crufty.net>
* Makefile: use SUBDIR.${MK_TESTS} so that we skip
unit-tests for obj and clean when FreeBSD is building WITHOUT_TESTS
* VERSION (_MAKE_VERSION): 20240901
Merge with NetBSD make, pick up
o reduce line length in error messages
o var.c: simplify printing of an evaluation stack element
2024-08-29 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240828
Merge with NetBSD make, pick up
o add more context to error message about recursive variables
o treat recursive variables non-fatally - continue parsing to end
of makefile
2024-08-12 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240808
Merge with NetBSD make, pick up
o improve some error messages for better clarify and readability
2024-07-22 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240722
Merge with NetBSD make, pick up
o job.c: remove dead code
2024-07-21 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240720
Merge with NetBSD make, pick up
o compat.c: do not run commands that have parse or evaluation errors.
o var.c: remove wrong error message about an undefined variable
mk/ChangeLog since bmake-20240711
2025-01-10 Simon J Gerraty <sjg@beast.crufty.net>
* rust.mk: use RUST_LIBS and RUST_PROGS
2025-01-01 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20250101
* use W flag to :S and :C rather than :tW
2024-12-16 Simon J Gerraty <sjg@beast.crufty.net>
* rust.mk: add RUSTFLAGS if needed
2024-12-12 Simon J Gerraty <sjg@beast.crufty.net>
* init.mk (OBJS_SRCS_FILTER): apply this as
${OBJS_SRCS_FILTER:ts:} as we do in FreeBSD.
2024-12-03 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20241202
* setopts.sh: needed by newlog.sh
2024-11-22 Simon J Gerraty <sjg@beast.crufty.net>
* meta.sys.mk: add META_MODE_XTRAS to META_MODE to make it
easier to add things like 'env' when debugging.
* install-mk (MK_VERSION): 20241122
* rust.mk: rename CARGO* to RUST_CARGO* so I don't feel
like this makefile should be renamed to cargo.mk
2024-11-11 Simon J Gerraty <sjg@beast.crufty.net>
* dirdeps.mk: add DIRDEPS_CACHED_ENV to dirdeps-cached and
DIRDEP_USE_EPILOGUE to _DIRDEP_USE
2024-10-30 Simon J Gerraty <sjg@beast.crufty.net>
* meta.sys.mk: if MK_META_ERROR_TARGET is yes and NEWLOG_SH is
set, and ERROR_LOGDIR already exists, hook _rotateErrorLog to
.BEGIN target.
2024-10-27 Simon J Gerraty <sjg@beast.crufty.net>
* options.mk: add support for DEBUG_OPTIONS (similar to
DEBUG_DIRDEPS) to allow us to see where options get set.
Eg. DEBUG_OPTIONS="STAGING*" gives:
bmake[1]: "mk/options.mk" line 89: sys.mk: MK_STAGING=yes (MK_DIRDEPS_BUILD=no)
bmake[1]: "mk/options.mk" line 66: local.init.mk: MK_STAGING=yes
bmake[1]: "mk/options.mk" line 66: local.init.mk: MK_STAGING_PROG=no
bmake[1]: "mk/options.mk" line 89: own.mk: MK_STAGING_MAN=yes (MK_STAGING=yes)
bmake[1]: "mk/options.mk" line 89: own.mk: MK_STAGING_PROG=no (MK_STAGING=yes)
bmake[1]: "mk/options.mk" line 89: own.mk: MK_STAGING_RUST=no (MK_STAGING_PROG=no)
* own.mk: fix setting of STAGE_OBJTOP (normally set by sys.dirdeps.mk)
2024-10-26 Simon J Gerraty <sjg@beast.crufty.net>
* rust.mk: add some documentation and support for staging
2024-10-25 Simon J Gerraty <sjg@beast.crufty.net>
* rust.mk: a means of integrating Rust projects into a larger build.
2024-10-18 Simon J Gerraty <sjg@beast.crufty.net>
* dirdeps-targets.mk: if DEBUG_DIRDEPS_TARGETS and we found
STATIC_DIRDEPS_CACHE, report its relative path.
2024-09-30 Simon J Gerraty <sjg@beast.crufty.net>
* dirdeps.mk: tweak the debug message for "Loading" a
Makefile.depend file, always report what the actual makefile is
with the DIRDEP it is for.
Remove the redundant "Looking" message.
2024-09-26 Simon J Gerraty <sjg@beast.crufty.net>
* meta2deps.py: when raising AssertionError include meta file name
with $SB trimmed if possible.
2024-09-23 Simon J Gerraty <sjg@beast.crufty.net>
* meta2deps.py: replace assert() with raise AssertionError when we
detect missing eXits, to ensure a meaningful message gets into
log.
2024-09-21 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20240921
* FILES: add genfiles.mk
2024-09-20 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20240920
* cython.mk: Get PYTHON_VERSION from PYTHON
2024-08-31 Simon J Gerraty <sjg@beast.crufty.net>
* subdir.mk: add ${SUBDIR.yes} - allows for SUBDIR.${MK_*}
and handle subdir with '-' in its name.
2024-08-23 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20240820
* links.mk: Allow a filter to be applied to SYMLINKS etc.
It is up to [BUILD_][SYM]LINKS_FILTER to do something sane.
Also only claim we are making a symlink if the value changed.
Intersting/relevant changes since bmake-20240625
ChangeLog since bmake-20240625
2024-07-13 Simon J Gerraty <sjg@beast.crufty.net>
* cleanup redundant differences from NetBSD make
o parse.c: no longer uses mmap
o var.c: check __STDC_VERSION__ not __STDC__
2024-07-12 Simon J Gerraty <sjg@beast.crufty.net>
* Apply some patches from NetBSD pkgsrc to reduce divergence
o meta.c: requires sys/select.h if available
o var.c: ensure SIZE_MAX has a value
o util.c: ensure SA_RESTART is defined
* configure.in: use *ksh* rather than just *ksh to match
ksh shell specification.
* unit-tests/Makefile: expand BROKEN_TESTS for ksh and
mksh in particular
2024-07-11 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240711
Merge with NetBSD make, pick up
o compat.c: allow Compat_RunCommand to also handle very long
commands by writing to a temp file when needed.
o main.c: extract the temp file logic recently added to Cmd_Exec
to Cmd_Argv so it can be leveraged by Compat_RunCommand.
2024-07-09 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240709
Merge with NetBSD make, pick up
o error out on parse/evaluation errors in shell commands
o var.c: error out on syntax errors in ':M' and ':N' modifiers
2024-07-07 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240707
Merge with NetBSD make, pick up
o only generate code for cleanup functions in CLEANUP mode
o hash.c: don't track hash table chain lengths during lookup
unless debugging
o main.c: move initialization of variable scopes to targ.c
o var.c: remove Var_End as it is now unnecessary
2024-07-06 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240706
Merge with NetBSD make, pick up
o reduce lint comments about ARGSUSED
o cond.c: error out on conditions containing the operators '&' and '|'
o str.c: error out on a matching malformed matching pattern '[['
o var.c: in error messages, distinguish parsing from evaluating
in error messages for anonymous variables, log the value
error out on unclosed expressions during parse time
2024-07-04 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240704
Merge with NetBSD make, pick up
o add more context information to error messages
o main.c: on error, print the targets to be made
add detailed exit status to message for failed sub-commands
o var.c: error out on the "Bad modifier" error message
2024-07-01 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240701
Merge with NetBSD make, pick up
o var.c: add :tt for Title case
2024-06-30 Simon J Gerraty <sjg@beast.crufty.net>
* configure.in: 20240630 further refine check for whether
TZ=Europe/Berlin works
* VERSION (_MAKE_VERSION): 20240630
Merge with NetBSD make, pick up
o job.c: reduce use of UNCONST
o main.c: add detailed exit status to message for failed sub-commands
o var.c: error out on some more syntax errors
add more context to "returned non-zero status" message
Intersting/relevant changes since bmake-20240520
ChangeLog since bmake-20240520
2024-06-25 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240625
Merge with NetBSD make, pick up
o job.c: ensure shellPath is always duped, avoid upsetting free()
2024-06-16 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240616
Merge with NetBSD make, pick up
o clean up collection of context information for error messages
o in warnings, move the word "warning" to the front
o var.c: throw an error on attempt to override an internal
read-only variable
2024-06-10 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240610
Merge with NetBSD make, pick up
o for.c: remove redundant shortcut for building the .for loop body
2024-06-02 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240602
Merge with NetBSD make, pick up
o rename some VarEvalMode constants to better match debug names.
o var.c: avoid out-of-bounds read when parsing indirect modifiers.
2024-06-01 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240601
Merge with NetBSD make, pick up
o add .export-all rather than allow .export with no argument
which can happen accidentally.
o if lua is available, run check-expect.lua after unit-tests
o main.c: use snprintf rather than strncpy
fix memory leak when purging realpath cache.
2024-05-28 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240528
Merge with NetBSD make, pick up
o fix a number of memory leaks
o replace magic numbers with POSIX FILENO constants
o hash.c: remove dead code from HashTable_DeleteEntry
o main.c: when complaining about unusable .OBJDIR
call PrintOnError if MAKE_DEBUG_OBJDIR_CHECK_WRITABLE is true.
o parse.c: use fewer technical terms in debug message for dependency
mk/ChangeLog since bmake-20240520
2024-06-22 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20240616
* dirdeps.mk: apply DEP_DIRDEPS_BUILD_DIR_FILTER after we have
computed build dirs, since some filters cannot be easily expressed via
DEP_DIRDEPS_FILTER.
2024-05-31 Simon J Gerraty <sjg@beast.crufty.net>
* dirdeps.mk: move reset of DIRDEPS_EXPORT_VARS
until after we a finished with it if building a cache.
Intersting/relevant changes since bmake-20240430
ChangeLog since bmake-20240430
2024-05-07 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240508
Merge with NetBSD make, pick up
o make: ensure variables set on command line get added to
.MAKEOVERRIDES (even if they start with '.') so they are passed to
sub-makes.
mk/ChangeLog since bmake-20240430
2024-05-04 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20240504
* dirdeps.mk: allow BUILD_DIRDEPS_OVERRIDES to pass overrides to
sub-make building DIRDEPS_CACHE.
Intersting/relevant changes since bmake-20240309
ChangeLog since bmake-20240309
2024-04-30 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240430
Merge with NetBSD make, pick up
o main.c: ensure '.include <makefile>' respects MAKESYSPATH.
Dir_FindFile will search .CURDIR first unless ".DOTLAST" is seen.
2024-04-28 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240428
Merge with NetBSD make, pick up
o simplify freeing of lists
o arch.c: trim pointless comments
o var.c: delay variable assignments until actually needed
don't reallocate memory after evaluating an expression, result is
almost always short-lived.
2024-04-26 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240426
Merge with NetBSD make, pick up
o job.c: in debug output, print the directory in which a job
failed at same time as failed target so it is more easily found in
build log.
2024-04-24 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240424
Merge with NetBSD make, pick up
o clean up comments, code and tests
2024-04-23 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240422
Merge with NetBSD make, pick up
o var.c: avoid LazyBuf for :*time modifiers.
LazyBuf's are not nul terminated so not suitable for passing to
functions that expect that. These modifiers are used sparingly so
an extra allocation is not a problem.
2024-04-20 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240420
Merge with NetBSD make, pick up
o provide more context information for parse/evaluate errors
2024-04-14 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240414
Merge with NetBSD make, pick up
o parse.c: print -dp debug info earlier so we see which
.if or .for line is being parsed.
2024-04-04 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240404
Merge with NetBSD make, pick up
o fix some unit tests for Cygwin
o parse.c: exit immediately after reading a null byte from a makefile
* fix generation of bmake.cat1
2024-03-19 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240314
Add/Improve support for Cygwin
o uname -s output isn't useful so allow configure to
set FORCE_MAKE_OS - to force the value of .MAKE.OS
and use Cygwin which matches uname -o
o fix some unit-tests for Cygwin
* configure.in: use_makefile=no for Cygwin et al.
NOTE: bmake does not support Cygwin and likely never will,
mk/ChangeLog since bmake-20240309
2024-04-24 Simon J Gerraty <sjg@beast.crufty.net>
* meta.autodep.mk: do not override start_utc
2024-04-18 Simon J Gerraty <sjg@beast.crufty.net>
* sys.dirdeps.mk: set defaults for DEP_* at level 0 too.
These help when first include of Makefile.depend happens in a leaf
dir.
* install-mk (MK_VERSION): 20240414
2024-04-09 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20240408
* init.mk: allow for _ as well as . to join V
and Q from QUALIFIED_VAR_LIST and VAR_QUALIFIER_LIST.
* progs.mk: avoid overlap between PROG_VARS and
init.mk's QUALIFIED_VAR_LIST since PROG would also
match its VAR_QUALIFIER_LIST,
libs.mk does not have the same issue.
* subdir.mk: _SUBDIRUSE for realinstall should run install
remove include of ${.CURDIR}/Makefile.inc that can be done via
local.subdir.mk where needed
* own.mk: do not conflict with man.mk
2024-03-19 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20240314
* add sys/Cygwin.mk from Christian Franke
Intersting/relevant changes since bmake-20240108
ChangeLog since bmake-20240108
2024-03-10 Simon J Gerraty <sjg@beast.crufty.net>
* boot-strap: tests can take a long time; use a cookie to
skip them if bmake has not been updated since tests last
ran successfully.
* Makefile: Cygwin handles MANTARGET man
* unit-tests/Makefile: set BROKEN_TESTS for Cygwin
2024-03-09 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240309
Merge with NetBSD make, pick up
o set .ERROR_EXIT to the exit status of .ERROR_TARGET
this allows a .ERROR target to ignore the case of
.ERROR_EXIT==6 which just means that the build actually
failed somewhere else.
2024-03-04 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240303
* var.c: on IRIX we need both inttypes.h and stdint.h
2024-03-01 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240301
Merge with NetBSD make, pick up
o export variables with value from target scope
when appropriate.
2024-02-12 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240212
Merge with NetBSD make, pick up
o remove unneeded conditional-compilation toggles
INCLUDES, LIBRARIES, POSIX, SYSVINCLUDE, SYSVVARSUB,
GMAKEEXPORT NO_REGEX and SUNSHCMD
* configure.in: add check for regex.h
* var.c: replace use of NO_REGEX with HAVE_REGEX_H
2024-02-04 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20240204
Merge with NetBSD make, pick up
o var.c: fix some lint (-dL) mode parsing issues
2024-02-02 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION: (_MAKE_VERSION): 20240202
Merge with NetBSD make, pick up
o make.1: note that arg to :D and :U can be empty
o var.c: $$ is not a parse error when .MAKE.SAVE_DOLLARS=no
mk/ChangeLog since bmake-20240108
2024-03-09 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20240309
* meta.sys.mk: _metaError: if .ERROR_EXIT == 6, we do not
want to save the .ERROR_META_FILE
2024-02-20 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20240220
* sys.dirdeps.mk, dirdeps-targets.mk, init.mk:
do not set .MAIN: dirdeps in sys.dirdeps.mk
dirdeps-targets.mk will do that for top-level builds
and init.mk will do it for others.
This allows a Makefile which has no need of 'dirdeps' to
set .MAIN for itself and "just work".
2024-02-18 Simon J Gerraty <sjg@beast.crufty.net>
* bsd.*.mk: for makefiles that get a bsd. symlink,
use _this in multiple inclusion tags since .PARSEFILE will not
DTRT when such a makefile is included directly by Makefile and
automatically (without bsd. prefix).
Since we cannot guarantee that our sys.mk will be used, we provide
a default _this in each makefile that gets a bsd. prefix such that
the value is the same regardless of bsd. prefix.
* subdir.mk: drop the !target guard on $SUBDIR_TARGETS
2024-02-12 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20240212
* SPDX-License-Identifier: BSD-2-Clause
Add SPDX-License-Identifier to inidicate that I consider
my copyright on any of these makefiles equivalent to BSD-2-Clause
* autoconf.mk: allow for configure.ac as currently recommended
* subdir.mk: support @auto
which is replaced with each subdir that
has a [Mm]akefile.
* subdir.mk: include local.subdir.mk if it exists.
* subdir.mk: rework to handle .WAIT
2024-02-11 Simon J Gerraty <sjg@beast.crufty.net>
* subdir.mk: _SUBDIRUSE report the target we are entering subdirs for.
2024-02-10 Simon J Gerraty <sjg@beast.crufty.net>
* prog.mk: treat empty SRCS the same as undefined
2024-02-02 Simon J Gerraty <sjg@beast.crufty.net>
* Avoid undefined errors in lint (-dL) mode
* man.mk (CMT2DOC_FLAGS): note that -mm does mdoc(7)
2024-01-28 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20240128
* FILES: add ccm.dep.mk for C++ modules
add suffixes.mk for common location for generic SUFFIX rules.
* auto.dep.mk autodep.mk meta.autodep.mk: include ccm.dep.mk
replace OBJ_EXTENSIONS with OBJ_SUFFIXES
* autodep.mk: leverage CXX_SUFFIXES for __depsrcs
and update style (spaces around = etc)
* init.mk: add OBJS_SRCS_FILTER to filter SRCS when
setting OBJS
* meta2deps.py: handle multiple ./ embedded in path better.
Interesting/relevant changes since bmake-20230909
* VERSION (_MAKE_VERSION): 20240106
Merge with NetBSD make, pick up
o fix duplicate progname when reporting an unknown target
o unit tests for Cmd_Exec using temp file
* VERSION (_MAKE_VERSION): 20240105
Merge with NetBSD make, pick up
o main.c: Cmd_Exec write cmd to a file if too big
avoid blowing commandline/env limits
* VERSION (_MAKE_VERSION): 20240101
o util.c: flesh out more of strftime
* configure.in: add --with-bmake-strftime
it is not a full implementation but enough to pass all
the unit-tests.
* parse.c: LoadFile do not append \n to empty buffer.
* VERSION (_MAKE_VERSION): 20231230
Merge with NetBSD make, pick up
o simplify memory allocation for string buffers
o fix declared types of list nodes
o suff.c: clean up freeing of suffixes
o var.c: simplify debug message for the ':@var@...@' modifier
clean up variable handling
* VERSION (_MAKE_VERSION): 20231226
Merge with NetBSD make, pick up
o compat.c: ensure make's output is correctly ordered with that of
the target when not going to a tty
o main.c: check for shellPath whether to call Shell_Init()
* VERSION (_MAKE_VERSION): 20231224
Merge with NetBSD make, pick up
o compat.c: check for shellPath whether to call Shell_Init()
tweak the unit test to detect the bug thus fixed.
o make.1: do not claim .SHELL is only used by jobs mode.
* VERSION (_MAKE_VERSION): 20231220
Merge with NetBSD make, pick up
o str.c: speed up pattern matching in the ':M' modifier
o var.c: fix confusing debug logging when deleting a variable
use consistent debug messages style when ignoring variables
* VERSION (_MAKE_VERSION): 20231210
Merge with NetBSD make, pick up
o var.c: avoid segfault on empty :C match expression
explain in debug log why variable assignment is ignored.
* VERSION (_MAKE_VERSION): 20231208
Merge with NetBSD make, pick up
o var.c: ensure fromCmd is set correctly for variables set on
command line.
* VERSION (_MAKE_VERSION): 20231124
Merge with NetBSD make, pick up
o main.c: cleanup processing of -j
fix lint warning about strchr
o var.c: more accurate error message for invalid ':mtime' argument
cleanup :[...] modifier
avoid reading beyond substring when comparing
o unit-tests cover all cases of :mtime, test and explain exporting
of variables
o cleanup comments
* bsd.after-import.mk (ECHO_TAG): FreeBSD no longer uses
$FreeBSD$ tag, so avoid adding it.
mk/ChangeLog since bmake-20230909
* dirdeps.mk: for MAKE_VERSION 20240105 we do not have the same
limits on command line length, so skip export of lists to env.
* jobs.mk: avoid C suffix in JOB_MAX_C if factor is floating
point. This keeps JOB_MAX numeric incase another makefile does
comparisons.
* gendirdeps.mk: if META_XTRAS is passed to us, add to META_FILES
Update import.sh to generate below
ChangeLog since bmake-20230622
2023-09-09 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20230909
Merge with NetBSD make, pick up
o main.c: allow -j to compute a multiple of ncpu
If _SC_NPROCESSORS_ONLN is supported; and -j arg is a floating
point number or ends in 'C' compute .MAKE.JOBS as a multiple of
_SC_NPROCESSORS_ONLN
.MAKE.JOBS.C will be "yes" if -jC is supported
2023-08-20 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20230820
Merge with NetBSD make, pick up
o make.1: note that :localtime is better for %s
o parse.c: improve error messages for invalid input.
o var.c: fix for %s:L:gmtime - set TZ=UTC and use localtime to get
correct result, it is still better to use %s:L:localtime.
2023-08-18 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20230818
Merge with NetBSD make, pick up
o meta.c: meta_ignore - check raw path against metaIgnorePaths
to potentially skip call to realpath.
o var.c: be strict when parsing the argument of the ':mtime' modifier
o unit-tests/varmod-mtime.mk: document why '${%s:L:localtime}'
should be used to get an equivalent value to time(3).
2023-08-16 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20230816
Merge with NetBSD make, pick up
o cond.c: clean up multiple-inclusion guards
2023-07-25 Simon J Gerraty <sjg@beast.crufty.net>
* unit-tests/Makefile: addd varmod-localtime to BROKEN_TESTS
if configure cannot work out how to control TZ.
Remove varmod-localtime from BROKEN_TESTS for IRIX*
2023-07-24 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20230723
* configure.in: fix the test for wether TZ=Europe/Berlin works.
Depending on the time of year, if run between 22:00 and 00:00 UTC
the check in configure would fail incorrectly.
Take the day into account as well.
2023-07-18 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20230711
Merge with NetBSD make, pick up
o make.1: clean up wording, clarify scope of '!' in conditions
2023-07-15 Simon J Gerraty <sjg@beast.crufty.net>
* make-bootstrap.sh.in: set prefix
If configure is run using ksh we get unexpanded ${prefix} in
DEFAULT_SYS_PATH, by ensuring prefix is set we should still get
correct result.
2023-07-13 Simon J Gerraty <sjg@beast.crufty.net>
* VERSION (_MAKE_VERSION): 20230711
bump version for IRIX tweaks
* make.h: undef OP_NONE if defined
* unit-tests/Makefile: set BROKEN_TESTS for IRIX
* configure.in: override INSTALL on IRIX
2023-06-27 Simon J Gerraty <sjg@beast.crufty.net>
* boot-strap op_test: ensure we set TEST_MAKE as we want it.
mk/ChangeLog since bmake-20230622
2023-09-09 Simon J Gerraty <sjg@beast.crufty.net>
* jobs.mk (JOB_MAX): use -jC if we can
we actually use JOB_MAX_C which defaults to 1.33C
2023-08-18 Simon J Gerraty <sjg@beast.crufty.net>
* now_utc: %s only works with :localtime
2023-07-14 Simon J Gerraty <sjg@beast.crufty.net>
* install-sh: ignore -c as claimed and only insist on
a directory for destination when more than one file to copy.
* sys.mk: when looking for SYS_OS_MK try ${.MAKE.OS} and
${.MAKE.OS:S,64,,} early (so we find sys/IRIX.mk for IRIX64)
2023-07-13 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20230711
* sys.mk: set SYS_MK and INSTALL_SH for systems with incompatible
install(1)
* sys/IRIX.mk: when setting ROOT_GROUP only match the first :0:
set INSTALL to install-sh rather than pathname that may not exist
(yet).
2023-07-07 Simon J Gerraty <sjg@beast.crufty.net>
* dirdeps.mk: pass DIRDEP_TARGETS to DIRDEP_MAKE
normally this is empty - for the default target, but there are
use-cases where we might set it to something else.
2023-07-04 Simon J Gerraty <sjg@beast.crufty.net>
* install-mk (MK_VERSION): 20230704
* dirdeps.mk: apply DEBUG_DIRDEPS_LIST_FILTER to lists we output
when DEBUG_DIRDEPS is in effect.
Eg. DEBUG_DIRDEPS_LIST_FILTER=ts\n
can greatly improve readability.
Relevant/interesting changes:
o optimize string matching for ':M' and ':N'
o warn about malformed patterns in ':M', ':N' and '.if make(...)'
o allow guards to be targets as well as variables
The guard targets may include variable references like
__${.PARSEDIR:tA}/${.PARSEFILE}__
o optimization for makefiles protected from multiple-inclusion
skip even opening the file after first include.
o var.c: do not allow delete of readOnly variable
o parse.c: .break takes no args
Relevant/interesting changes:
o parse.c: don't print null filename in stack traces
o for.c: skip syntactically wrong .for loops
o var.c: allow for :gmtime=${mtime}
add :mtime[=timestamp] where timestamp is used if stat(2)
fails, if :mtime=error stat(2) failure causes error.
o make.1: fix documentation of .PREFIX to match reality and POSIX
o unit-tests: improved var-scope-local
Relevant/interesting changes:
* make.1: document seemingly unexplained Error code 6.
o compat.c: CompatDeleteTarget skip .PHONY targets to be
consistent with JobDeleteTarget.
o job.c: fix memory leak in handling sysv :from=to modifiers
o unit tests for .MAKE.META.IGNORE_{FILTER,PATHS,PATTERNS}
o var.c: fix parsing of unevaluated subexpressions with
unbalanced '{}'
o cond.c: reduce complexity of evaluating expressions
ChangeLog since bmake-20230126
* VERSION (_MAKE_VERSION): 20230208
Merge with NetBSD make, pick up
o var.c: always use SCOPE_GLOBAL for :_ to avoid problems
when it has been used within conditional expressions
* install-sh: if making directories ensure umask is set
to match mode.
* Makefile: use DIRMODE for directories and
NONBINMODE for man pages and mk files
Relevant/interesting changes (see ChangeLog for more):
o variables like .newline and .MAKE.{GID,PID,PPID,UID}
should be read-only.
o .[NO]READONLY: for control of read-only variables
o .SYSPATH: for controlling the path searched for makefiles
o allow for white-space between command specifiers @+-
o add more details to warning 'Extra targets ignored'
o make.1: sync list of built-in variables with reality
sort list of built-in variables
o cond.c: add more details to error message for numeric comparison
o job.c: fix handling of null bytes in output
o Allow .break to terminate a .for loop early
o var.c: fix out-of-bounds errors when parsing
o fix exit status for '-q' (since 1994)
Relevant/interesting changes:
o parse.c: fix out-of-bounds read when parsing an invalid line
https://bugs.freebsd.org/265119
fix memory leak in wildcard targets and sources
fix off-by-one error in buffer for .WAIT nodes
o allow to randomize build order of targets
.MAKE.MODE += randomize-targets can help uncover dependency bugs
Most relevant change:
o parse.c: try to include 'posix.mk' the first time
.POSIX: is encountered, to allow for beter POSIX compliance.
Others
o cond.c: make debug logging for comparisons less technical
o lst.c: fix mem leak in Lst_Remove
o job.c: fix echoing of command with '-' in silent target in jobs mode
o var.c: make debug logs more readable
prefer 'long long' over 'long' on 32-bit C99 platforms
fix crash on .undef of an environment variable
* unit-tests/Makefile: disable opt-debug-x-trace on Linux if there
is any chance we have dash as .SHELL
* meta.c: use a variable to hold command line to be filtered
to avoid any side effects from content of command line.
Features of interest:
Allow setting target local variables (similar to gmake)
In META_MODE .MAKE.META.CMP_FILTER can be used for filtering commands
before comparion.
contrib/bmake/mk/cc-wrap.mk is an example of using these
See ChangeLog for the gory details.
Relevant changes see ChangeLog for details:
Add support for ${.SUFFIXES} as read-only variable.
Fix memory leak in cond.c
Punt on write errors - ENOSPC etc.
Lots of code refactoring, rework to reduce memory allocations.
More unit-tests.
Lots more unit tests and code cleanup
Relevant changes from ChangeLog
o job.c: Print -de error information when running multiple jobs
o var.c: only report error for unmatched regex subexpression
when linting (-dL) since we cannot tell when an unmatched
subexpression is an expected result.
reduce memory allocations in the modifiers ':D' and ':U'
reduce memory allocation and strlen calls in modifier ':from=to'
in the ':Q' modifier, only allocate memory if necessary
improve performance for LazyBuf
reduce debug logging and memory allocation for ${:U...}
reduce verbosity of the -dv debug logging for standard cases
fix double varname expansion in the variable modifier '::='
o var.c: avoid evaluating many modifiers in parse only mode
in strict mode (-dL) many variable references are parsed twice,
the first time just to report parse errors early, so we want to
avoid side effects and wasted effort to the extent possible.
Changes of interest
o unit-tests: use private TMPDIR to avoid errors from other users
o avoid strdup in mkTempFile
o always use vfork
o job.c: do not create empty shell files in jobs mode
reduce unnecessary calls to waitpid
o cond.c: fix debug output for comparison operators in conditionals
Quite a lot of churn on style, but lots of
good work refactoring complicated functions
and lots more unit-tests.
Thanks mostly to rillig at NetBSD
Some interesting entries from ChangeLog
o .MAKE.{UID,GID} represent uid and gid running make.
o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.
o add more unit tests for META MODE
Change-Id: I4d3bcf08b4c864d98b343f602efe5a75dbfa7a94
o allow env var MAKE_OBJDIR_CHECK_WRITABLE=no to skip writable
checks in InitObjdir. Explicit .OBJDIR target always allows
read-only directory.
o Fix building and unit-tests on non-BSD.
o More code cleanup and refactoring.
o More unit tests
Lots of new unit-tests increase code coverage.
Lots of refactoring, cleanup and simlpification to reduce
code size.
Fixes for Bug 223564 and 245807
Updates to dirdeps.mk and meta2deps.py
Lots of code refactoring, simplification and cleanup.
Lots of new unit-tests providing much higher code coverage.
All courtesy of rillig at netbsd.
Other significant changes:
o new read-only variable .SHELL which provides the path of the shell
used to run scripts (as defined by the .SHELL target).
o new debug option -dl: LINT mode, does the equivalent of := for all
variable assignments so that file and line number are reported for
variable parse errors.
from ChangeLog:
o filemon/filemon_dev.c: use O_CLOEXEC rather than extra syscall
o meta.c: target flagged .META is out-of-date if meta file missing
o cond.c: fix for compare_expression when doEval=0
o unit-tests/Makefile: rework
o filemon/filemon_dev.c: ensure filemon fd is closed on exec.
from ChangeLog:
o cond.c: do not eval unnecessary terms of conditionals.
o meta.c: report error if lseek in filemon_read fails
o str.c: performance improvement for Str_Match for multiple '*'
o dieQuietly: supress the failure output from make
when failing node is a sub-make or a sibling failed.
This cuts down greatly on unhelpful noise at the end of
build log. Disabled by -dj or .MAKE.DIE_QUIETLY=no
o unit test for :Or
Changes since 20181221 are mostly portability related
hence the large gap in versions imported.
There are however some bug fixes, and a rework of filemon handling.
In NetBSD make/filemon/filemon_ktrace.c allows use of fktrace
and elimination of filemon(4) which has not had the TLC it needs.
FreeBSD filemon(4) is in much better shape, so bmake/filemon/filemon_dev.c
allows use of that, with a bit less overhead than the ktrace model.
Summary of changes from ChangeLog
o str.c: empty string does not match % pattern
plus unit-test changes
o var.c: import handling of old sysV style modifier using '%'
o str.c: refactor brk_string
o meta.c: meta_oodate, CHECK_VALID_META is too aggressive for CMD
a blank command is perfectly valid.
o meta.c: meta_oodate, check for corrupted meta file
earlier and more often.
* meta.c: meta_compat_parent check for USE_FILEMON
patch from Soeren Tempel
o meta.c: fix compat mode, need to call meta_job_output()
o job.c: extra fds for meta mode not needed if using filemon_dev
o meta.c: avoid passing NULL to filemon_*() when meta_needed()
returns FALSE.
o filemon/filemon_{dev,ktrace}.c: allow selection of
filemon implementation. filemon_dev.c uses the kernel module
while filemon_ktrace.c leverages the fktrace api available in
NetBSD. filemon_ktrace.c can hopefully form the basis for
adding support for other tracing mechanisms such as strace on
Linux.
o meta.c: when target is out-of-date per normal make rules
record value of .OODATE in meta file.
o parse.c: don't pass NULL to realpath(3)
some versions cannot handle it.
o parse.c: ParseDoDependency: free paths rather than assert
plus more unit-tests
Of relevance:
o job.c: skip polling job token pipe
o parse.c: be more cautious about detecting depenency line
rather than sysV style include.
also in mk:
* dirdeps.mk: include local.dirdeps-build.mk when .MAKE.LEVEL > 0
ie. we are building something.
* FILES: add dirdeps-options.mk to deal with optional DIRDEPS.
* ldorder.mk: describe how to use LDORDER_EXTERN_BARRIER
if needed.
From ChangeLog
* VERSION: 20180222
Merge with NetBSD make, pick up
o parse.c: avoid calling sysconf for every call to loadfile
* VERSION: 20180218
Merge with NetBSD make, pick up
o var.c: Var_Set handle NULL value anytime.
* VERSION: 20180212
Merge with NetBSD make, pick up
o parse.c: do not treat .info as warning with -W
* VERSION: 20171207
Merge with NetBSD make, pick up
o var.c: Var_Append use Var_Set if var not previously set
so that VAR_CMD is handled correctly.
Add a suitable unit-test.
* VERSION: 20171126
* aclocal.m4: use AC_LINK_IFELSE for AC_C___ATTRIBUTE__
since AC_TRY_COMPILE puts input inside main()
which upsets modern compilers.
* VERSION: 20171118
Merge with NetBSD make, pick up
o var.c: do not append to variable set on command line
add unit-test to catch this.
From ChangeLog
2017-10-28 Simon J. Gerraty <sjg@bad.crufty.net>
* VERSION: 20171028
Merge with NetBSD make, pick up
o main.c: ignore empty MAKEOBJDIR
* Makefile.config.in:
make @prefix@ @machine*@ and @default_sys_path@ defaults.
2017-10-05 Simon J. Gerraty <sjg@bad.crufty.net>
* VERSION: 20171005
* unit-tests/dotwait.mk: redirect stderr through pipe for more
consistent result on some platforms.
2017-08-13 Simon J. Gerraty <sjg@bad.crufty.net>
* machine.sh: entry for AIX
2017-08-12 Simon J. Gerraty <sjg@bad.crufty.net>
* VERSION (_MAKE_VERSION): Move the setting of _MAKE_VERSION
to a file that can be included by configure as well as make.
This allows configure to set set _MAKE_VERSION in make-bootstrap.sh
2017-08-10 Simon J. Gerraty <sjg@bad.crufty.net>
* Makefile (_MAKE_VERSION): 20170810
Merge with NetBSD make, pick up
o meta.c: if target is in subdir we only need subdir name in
meta_name.
Several misc cleanups, refactor main() to reduce size.
Adds -v option to always fully expand variables (only interesting to NetBSD)
And in particular (from ChangeLog):
o meta.c: ensure command output in meta file has ending newline
even when filemon not being used.
When matching ${.MAKE.META.IGNORE_PATTERNS} do not use
pathname via ':L' since any ':' in pathname breaks that.
Instead set a '${.p.}' to pathname in the target context and
use that.
From ChangeLog
2016-12-12 Simon J. Gerraty <sjg@bad.crufty.net>
* Makefile (_MAKE_VERSION): 20161212
Merge with NetBSD make, pick up
o main.c: look for obj.${MACHINE}-${MACHINE_ARCH} too.
2016-12-09 Simon J. Gerraty <sjg@bad.crufty.net>
* Makefile (_MAKE_VERSION): 20161209
Merge with NetBSD make, pick up
o main.c: cleanup setting of .OBJDIR
o parse.c: avoid coredump from (var)=val
2016-11-26 Simon J. Gerraty <sjg@bad.crufty.net>
* Makefile (_MAKE_VERSION): 20161126
Merge with NetBSD make, pick up
o make.c: Make_OODate: report src node name if path not set
2016-09-26 Simon J. Gerraty <sjg@bad.crufty.net>
* Makefile (_MAKE_VERSION): 20160926
Merge with NetBSD make, pick up
o support for .DELETE_ON_ERROR: (remove targets that fail)
2016-09-26 Simon J. Gerraty <sjg@bad.crufty.net>
* Makefile MAN: tweak .Dt to match ${PROG}
mk/ChangeLog
2016-12-12 Simon J. Gerraty <sjg@bad.crufty.net>
* install-mk (MK_VERSION): 20161212
* meta2deps.py: set pid_cwd[pid] when we process 'C'hdir,
rather than when we detect pid change.
2016-12-07 Simon J. Gerraty <sjg@bad.crufty.net>
* install-mk (MK_VERSION): 20161207
* meta.stage.mk: add stage_as_and_symlink for staging packages.
We build foo.tgz stage_as foo-${VERSION}.tgz but want to be able
to use foo.tgz to reference the latest staged version - so we
make foo.tgz a symlink to it.
Using a target to do both operations ensures we stay in sync.
2016-11-26 Simon J. Gerraty <sjg@bad.crufty.net>
* install-mk (MK_VERSION): 20161126
* dirdeps.mk: set DIRDEPS_CACHE before we include local.dirdeps.mk
so it can add dependencies.
2016-10-10 Simon J. Gerraty <sjg@bad.crufty.net>
* dirdeps.mk: set DEP_* before we expand .MAKE.DEPENDFILE_PREFERENCE
do that they can influence the result correctly.
* dirdeps.mk (${DIRDEPS_CACHE}): make sure we pass on TARGET_SPEC
* dirdeps.mk: Add ONLY_TARGET_SPEC_LIST and NOT_TARGET_SPEC_LIST
similar to ONLY_MACHINE_LIST and NOT_MACHINE_LIST
2016-10-05 Simon J. Gerraty <sjg@bad.crufty.net>
* dirdeps.mk: remove dependence on jot (normal situations anyway).
Before we read another Makefile.depend* set DEP_* vars from
_DEP_TARGET_SPEC in case it uses any of them with :=
When bootstrapping, trim any ,* from extention of chosen _src
Makefile.depend* to get the machine value we subst for.
2016-09-30 Simon J. Gerraty <sjg@bad.crufty.net>
* dirdeps.mk: use TARGET_SPEC_VARS to qualify components added to
DEP_SKIP_DIR and DEP_DIRDEPS_FILTER
* sys.mk: extract some bits to sys.{debug,vars}.mk
for easier re-use by others.
2016-09-23 Simon Gerraty <sjg@sjg-mba13>
* lib.mk: Use ${PICO} for extension for PIC objects.
default to .pico (like NetBSD) safe on case insensitive filesystem.
2016-08-19 Simon J. Gerraty <sjg@bad.crufty.net>
* meta.sys.mk (META_COOKIE_TOUCH): use ${.OBJDIR}/${.TARGET:T} as default
Interesting changes:
o meta.c: move handling of .MAKE.META.IGNORE_* to meta_ignore()
so we can call it before adding entries to missingFiles.
Thus we do not track files we have been told to ignore.
o meta_oodate: apply .MAKE.META.IGNORE_FILTER (if defined) to
pathnames, and skip if the expansion is empty.
Useful for dirdeps.mk when checking DIRDEPS_CACHE.
o meta.c: remove all missingFiles entries that match a deleted
dir.
o main.c: set .ERROR_CMD if possible.
Interesting items from ChangeLog:
o cached_realpath(): avoid hitting filesystem more than necessary.
o meta.c: refactor need_meta decision, add knobs for
missing meta file and filemon data wrt out-of-datedness.
o meta.c: missing filemon data is only relevant if we read a
meta file.
Also do not return oodate for a missing metafile if gn->path
points to .CURDIR
Interesting changes (from ChangeLog):
o meta.c: ignore paths that match .MAKE.META.IGNORE_PATTERNS
this is useful for gcov builds.
o propagate errors from filemon(4).
o meta.c: apply realpath() before matching against metaIgnorePaths
o allow makefile to set .MAKE.JOBS