Simon J. Gerraty 4f8f2bc294 Import bmake-20250618
Intersting/relevant changes since bmake-20250414

ChangeLog since bmake-20250414

2025-06-18  Simon J Gerraty  <[email protected]>

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

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

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

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

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

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

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

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

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

	* install-mk (MK_VERSION): 20250528

	* add dirdeps2dplibs.mk

2025-05-18  Simon J Gerraty  <[email protected]>

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

	* 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.
2025-06-27 19:38:49 -07:00
2022-04-03 12:52:08 -07:00
2020-11-20 03:54:37 +00:00
2025-06-27 19:38:49 -07:00
2021-01-13 17:24:34 -08:00
2025-06-27 19:38:49 -07:00
2021-12-17 23:27:22 -08:00
2018-03-01 23:45:44 +00:00
2025-01-30 15:38:13 -08:00
2025-06-27 19:38:49 -07:00
2025-06-27 19:38:49 -07:00
2024-03-13 19:14:41 -07: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
2025-06-27 19:38:49 -07:00
2025-06-27 19:38:49 -07:00
2025-06-27 19:38:49 -07:00
2024-07-20 12:41:55 -07:00
2024-07-20 12:41:55 -07:00
2024-07-20 12:41:55 -07: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-06-27 19:38:49 -07:00
2023-01-27 16:23:54 -08:00
2025-06-27 19:38:49 -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
2024-03-13 19:14:41 -07:00
2025-06-27 19:38:49 -07:00
2025-06-27 19:38:49 -07:00
2021-01-13 17:24:34 -08: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
2025-06-27 19:38:49 -07:00
2025-06-27 19:38:49 -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
2025-06-27 19:38:49 -07:00
2025-06-27 19:38:49 -07:00
2025-06-27 19:38:49 -07:00
2025-03-19 14:01:12 -07:00
2024-05-03 15:43:12 -07:00
2013-01-31 16:44:23 +00:00
2025-06-27 19:38:49 -07:00
2025-06-27 19:38:49 -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
2025-03-19 14:01:12 -07:00
2025-06-27 19:38:49 -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
2021-12-17 23:27:22 -08:00
2023-01-27 16:23:54 -08:00
2024-07-20 12:41:55 -07:00
2024-07-20 12:41:55 -07:00
2018-03-01 23:45:44 +00:00
2023-01-27 16:23:54 -08:00
2025-06-27 19:38:49 -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
2025-06-27 19:38:49 -07:00
2025-06-27 19:38:49 -07: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%