freebsd-src/contrib/bmake
Matt Macy 06bf2a6aef Add simple preempt safe epoch API
Read locking is over used in the kernel to guarantee liveness. This API makes
it easy to provide livenes guarantees without atomics.

Includes epoch_test kernel module to stress test the API.

Documentation will follow initial use case.

Test case and improvements to preemption handling in response to discussion
with mjg@

Reviewed by:	imp@, shurd@
Approved by:	sbruno@
2018-05-10 17:55:24 +00:00
..
lst.lib
mk Update to bmake-201802222 2018-03-02 01:53:50 +00:00
PSD.doc Merge bmake-20170301 2017-03-06 23:02:33 +00:00
unit-tests Update to bmake-201802222 2018-03-02 01:53:50 +00:00
aclocal.m4 Update to bmake-201802222 2018-03-02 01:53:50 +00:00
arch.c Merge bmake-20170420 2017-04-21 00:45:44 +00:00
bmake.1 Import bmake-20170711 2017-07-15 21:19:27 +00:00
bmake.cat1 Update to bmake-201802222 2018-03-02 01:53:50 +00:00
boot-strap Import bmake-20160604 2016-06-05 20:26:16 +00:00
bsd.after-import.mk Update to bmake-20171028 2017-11-02 20:08:00 +00:00
buf.c
buf.h Import bmake-20170711 2017-07-15 21:19:27 +00:00
ChangeLog Update to bmake-201802222 2018-03-02 01:53:50 +00:00
compat.c Import bmake-20170720 2017-07-24 04:38:05 +00:00
cond.c Merge bmake-20170420 2017-04-21 00:45:44 +00:00
config.h.in Merge bmake-20160606 2016-06-08 17:51:21 +00:00
configure Update to bmake-201802222 2018-03-02 01:53:50 +00:00
configure.in Update to bmake-201802222 2018-03-02 01:53:50 +00:00
dir.c Merge bmake-20170420 2017-04-21 00:45:44 +00:00
dir.h Import bmake-20170711 2017-07-15 21:19:27 +00:00
dirname.c Merge bmake-20160307 2016-03-11 01:35:39 +00:00
FILES Update to bmake-20171028 2017-11-02 20:08:00 +00:00
find_lib.sh
for.c Merge bmake-20170420 2017-04-21 00:45:44 +00:00
getopt.c Merge bmake-20160307 2016-03-11 01:35:39 +00:00
hash.c
hash.h Import bmake-20170711 2017-07-15 21:19:27 +00:00
install-sh
job.c Add simple preempt safe epoch API 2018-05-10 17:55:24 +00:00
job.h
lst.h
machine.sh Update to bmake-20171028 2017-11-02 20:08:00 +00:00
main.c Update to bmake-20171028 2017-11-02 20:08:00 +00:00
make-bootstrap.sh.in Update to bmake-20171028 2017-11-02 20:08:00 +00:00
make-conf.h
make.1 Import bmake-20170711 2017-07-15 21:19:27 +00:00
make.c Merge bmake-20161212 2016-12-19 23:38:07 +00:00
make.h Update to bmake-201802222 2018-03-02 01:53:50 +00:00
make_malloc.c Merge bmake-20170420 2017-04-21 00:45:44 +00:00
make_malloc.h
Makefile Update to bmake-20171028 2017-11-02 20:08:00 +00:00
Makefile.config.in Update to bmake-201802222 2018-03-02 01:53:50 +00:00
makefile.in
meta.c Update to bmake-201802222 2018-03-02 01:53:50 +00:00
meta.h Merge bmake-20160512 2016-05-20 17:35:39 +00:00
metachar.c Merge bmake 20151020 2015-10-23 17:38:01 +00:00
metachar.h Merge bmake 20151020 2015-10-23 17:38:01 +00:00
mkdeps.sh
nonints.h Import bmake-20170720 2017-07-24 04:38:05 +00:00
os.sh Update to bmake-201802222 2018-03-02 01:53:50 +00:00
parse.c Update to bmake-201802222 2018-03-02 01:53:50 +00:00
pathnames.h
ranlib.h
README Merge bmake-20160606 2016-06-08 17:51:21 +00:00
realpath.c
setenv.c
sigcompat.c
sprite.h Import bmake-20170711 2017-07-15 21:19:27 +00:00
str.c Merge bmake-20170510 2017-05-10 22:45:05 +00:00
stresep.c Update to bmake-201802222 2018-03-02 01:53:50 +00:00
strlcpy.c
strlist.c
strlist.h
suff.c Merge bmake-20170420 2017-04-21 00:45:44 +00:00
targ.c Merge bmake-20170420 2017-04-21 00:45:44 +00:00
trace.c
trace.h
util.c
var.c Update to bmake-201802222 2018-03-02 01:53:50 +00:00
VERSION Update to bmake-201802222 2018-03-02 01:53:50 +00:00
wait.h

			       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 NetBSD, FreeBSD, Solaris 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

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
http://www.crufty.net/ftp/pub/sjg/mk.tar.gz
which 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.
If you can provide access to a suitable machine - even better.

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

--sjg <sjg@crufty.net>