Simon J. Gerraty fe271bdb43 Import bmake-20260313
Intersting/relevant changes since bmake-20251111

ChangeLog since bmake-20251111

2026-03-12  Simon J Gerraty  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* VERSION (_MAKE_VERSION): 20260222
	o mk file update

2026-02-16  Simon J Gerraty  <[email protected]>

	* VERSION (_MAKE_VERSION): 20260216
	Merge with NetBSD make, pick up
	o minor cleanups

2026-02-10  Simon J Gerraty  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* 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  <[email protected]>

	* VERSION (_MAKE_VERSION): 20260110
	Merge with NetBSD make, pick up
	o minor cleanups

mk/ChangeLog since bmake-20251111

2026-03-12  Simon J Gerraty  <[email protected]>

	* install-mk (MK_VERSION): 20260313

	* sys.vars.mk: use .MAKE.VERSION
	M_type can simply use '$x'

2026-02-22  Simon J Gerraty  <[email protected]>

	* 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  <[email protected]>

	* meta.autodep.mk (${_DEPENDFILE}): add .NOMETA

2026-01-08  Simon J Gerraty  <[email protected]>

	* rust.mk: better accommodation for RUST_LIBS.
	Set RUST_{LIBS,PROGS}_CARGO_BUILD_OUTPUT_LIST to
	simplify staging.

2025-12-08  Simon J Gerraty  <[email protected]>

	* 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?=:
2026-04-06 11:25:05 -07:00
2022-04-03 12:52:08 -07:00
2020-11-20 03:54:37 +00:00
2026-04-06 11:25:05 -07:00
2021-01-13 17:24:34 -08:00
2026-04-06 11:25:05 -07:00
2021-12-17 23:27:22 -08:00
2018-03-01 23:45:44 +00:00
2025-07-19 10:08:57 -07:00
2026-04-06 11:25:05 -07:00
2026-04-06 11:25:05 -07:00
2025-12-03 09:57:57 -08:00
2025-03-19 14:01:12 -07:00
2024-05-03 15:43:12 -07:00
2024-05-03 15:43:12 -07:00
2026-04-06 11:25:05 -07:00
2025-07-19 10:08:57 -07:00
2025-07-19 10:08:57 -07:00
2024-07-20 12:41:55 -07:00
2025-12-03 09:57:57 -08:00
2025-12-03 09:57:57 -08:00
2025-06-27 19:38:49 -07:00
2024-07-20 12:41:55 -07:00
2020-06-09 02:07:26 +00:00
2025-12-03 09:57:57 -08:00
2023-01-27 16:23:54 -08:00
2025-07-19 10:08:57 -07:00
2024-05-23 13:08:58 -07:00
2025-06-27 19:38:49 -07:00
2025-06-27 19:38:49 -07:00
2025-12-03 09:57:57 -08:00
2026-04-06 11:25:05 -07:00
2026-04-06 11:25:05 -07:00
2026-04-06 11:25:05 -07:00
2024-05-03 15:43:12 -07:00
2024-05-03 15:43:12 -07:00
2023-01-27 16:23:54 -08:00
2026-04-06 11:25:05 -07:00
2025-07-19 10:08:57 -07:00
2022-02-05 12:03:50 -08:00
2024-05-03 15:43:12 -07:00
2024-03-13 19:14:41 -07:00
2026-04-06 11:25:05 -07:00
2026-04-06 11:25:05 -07:00
2026-04-06 11:25:05 -07:00
2026-04-06 11:25:05 -07:00
2024-05-03 15:43:12 -07:00
2013-01-31 16:44:23 +00:00
2026-04-06 11:25:05 -07:00
2025-08-05 15:31:51 -07:00
2021-12-17 23:27:22 -08:00
2022-02-05 12:03:50 -08:00
2023-01-27 16:23:54 -08:00
2026-04-06 11:25:05 -07:00
2026-04-06 11:25:05 -07:00
2021-01-13 17:24:34 -08:00
2024-01-13 17:16:25 -08:00
2013-01-31 16:44:23 +00:00
2021-12-17 23:27:22 -08:00
2025-12-03 09:57:57 -08:00
2025-12-03 09:57:57 -08:00
2025-07-19 10:08:57 -07:00
2026-04-06 11:25:05 -07:00
2018-03-01 23:45:44 +00:00
2023-01-27 16:23:54 -08:00
2026-04-06 11:25:05 -07:00
2025-06-27 19:38:49 -07:00
2025-06-27 19:38:49 -07:00
2021-02-10 17:51:11 -08:00
2024-07-20 12:41:55 -07:00
2026-04-06 11:25:05 -07:00
2026-04-06 11:25:05 -07:00
2025-12-03 09:57:57 -08:00

			       bmake
			       *****

This directory contains a port of the BSD make tool (from NetBSD).
Since 1993 I have run it on AIX, BSDi, Darwin, FreeBSD, HP-UX, IRIX,
Linux, Minix, OSF, Solaris, SunOS and even UTS.
Others have run it on many more systems.

Currently each release is tested on Darwin, NetBSD, FreeBSD and Linux.

Since 2003 bmake switched to a date based version (first was 20030714)
which generally represents the date it was last merged with NetBSD's
make.  Since then, NetBSD's make is imported within a week of any
*interesting* changes, so that bmake tracks it very closely.

Building
========

The preferred way to bootstrap bmake is::

	./bmake/boot-strap

there are a number of args - most of which get passed to configure,
eg.
::

	./bmake/boot-strap --prefix=/opt

see the boot-strap script for details.

For folk that hate to read anything, since 20121212 you can also use
the GNU standard process of::

	./configure; make; make install

This will *not* work on Darwin or any other system with a case
insensitive filesystem.  It depends on a generated ``makefile`` which
is disabled by default on Darwin.

To make much use of bmake you will need the bsd.*.mk macros or my
portable *.mk macros which are included with bmake since 20121212
and separately available from
https://www.crufty.net/ftp/pub/sjg/mk.tar.gz
both that and
https://www.crufty.net/ftp/pub/sjg/bmake.tar.gz
will be links to the latest versions.

Porting
=======

If you encounter a system that bmake does not build or work on *out of
the box*, I welcome patches.
Even a report of unit tests which fail is appreciated.
If you can provide access to a suitable machine - even better.

More info can be found at https://www.crufty.net/help/sjg/bmake.htm

--sjg <[email protected]>

S
Description
The FreeBSD src tree publish-only repository. Experimenting with 'simple' pull requests....
Readme
3.8 GiB
0 Stars 1 Watchers 0 Forks
Languages
C 59.9%
C++ 26.8%
Roff 4.5%
Shell 2.8%
Assembly 1.7%
Other 3.7%