History log of /freebsd-current/share/mk/bsd.subdir.mk
Revision Date Author Comments
# b571bcea 21-Apr-2024 Enji Cooper <ngie@FreeBSD.org>

bsd.subdir.mk: improve `SUBDIR.${MK_FOO}` advice

- Remove superfluous whitespace by removing trailing whitespace
before `\` (line continuation character)
- Quote `SUBDIR.` to clarify the fact that this is a variable
reference--not the end of a sentence.


# fbae3083 02-Feb-2024 Jessica Clarke <jrtc27@FreeBSD.org>

bsd.subdir.mk: Drop broken optimisation for realinstall parallelisation

Not all of the tree is happy for realinstall to be done in parallel. In
particular, Makefile.inc1 uses .WAIT to force etc to be installed after
earlier subdirectories, since etc calls into share/man's makedb to run
makewhatis on the tree and needs all manpages to have been installed.
Also, libexec/Makefile doesn't set SUBDIR_PARALLEL, and the link from
ld-elf32.1 to ld-elf.1 relies on rtld-elf having been installed before
rtld-elf32, otherwise creating the link will fail.

In general, core behavioural differences like this between NO_ROOT and
"normal" builds are also dangerous and confusing.

If this optimisation is deemed important, it should be reintroduced in a
more limited and robust manner that doesn't break the above situations.
Until then value correctness over slight efficiency gains on high core
count machines, the same machines where you're more likely to encounter
issues from this optimisation.

This reverts commits cd19ecdbdc87 ("Similar to r296013 for NO_ROOT,
force SUBDIR_PARALLEL for buildworld WORLDTMP staging.") and
b9c6f3168112 ("Add more STANDALONE_SUBDIR_TARGETS.").

Found by: CheriBSD Jenkins
Reviewed by: bdrewery, brooks
Fixes: cd19ecdbdc87 ("Similar to r296013 for NO_ROOT, force SUBDIR_PARALLEL for buildworld WORLDTMP staging.")
Fixes: b9c6f3168112 ("Add more STANDALONE_SUBDIR_TARGETS.")
MFC after: 1 week
Differential Revision: https://reviews.freebsd.org/D43705


# 97759ccc 23-Nov-2023 Warner Losh <imp@FreeBSD.org>

share: Remove ancient SCCS tags.

Remove ancient SCCS tags from the tree, automated scripting, with two
minor fixup to keep things compiling. All the common forms in the tree
were removed with a perl script.

Sponsored by: Netflix


# d0b2dbfa 16-Aug-2023 Warner Losh <imp@FreeBSD.org>

Remove $FreeBSD$: one-line sh pattern

Remove /^\s*#[#!]?\s*\$FreeBSD\$.*$\n/


# c07be2c5 28-Oct-2022 Warner Losh <imp@FreeBSD.org>

make: Don't print as many ==> and -- xxx -- lines in meta mode

Since metamode just announces what it's doing, the extra -- xxx -- lines
aren't needed for recursive descent, nor are the ==> lines needed. This
speeds up rebuilding kernels a lot...

Sponsored by: Netflix
Reviewed by: sjg, bdrewery
Differential Revision: https://reviews.freebsd.org/D37071


# b58ea3e1 28-Feb-2022 Jessica Clarke <jrtc27@FreeBSD.org>

Fix hand-rolled METALOG entries for installconfig during distributeworld

During distributeworld we call distribute on subdirectories, which in
turn calls installconfig. However, this recursive installconfig call
appends the distribution name (in these cases, "base") to DESTDIR. For
install(1) this works fine as its -D argument comes from the top-level
Makefile.inc1, which passes the original DESTDIR, thereby resulting in
the METALOG entry having the distribution name as a prefix representing
its true installed path relative to the root, but for the hand-rolled
entries they do not use install(1) and thus do not have access to what
the original DESTDIR was, resulting in the METALOG missing this prefix.

Thus, pass down the name of the distribution via a new variable DISTBASE
(chosen as Makefile.inc1 already uses that to convey this exact same
information to etc's distrib-dirs during distributeworld) and prepend
this to the handful of manually-generated METALOG entries. For the
installworld case this variable will be empty and so this behaves as
before.

Note that we need to be careful to avoid double slashes in the METALOG;
distributeworld uses find | awk to split the single METALOG up into
multiple dist.meta files, and this relies on the paths in the METALOG
having the exact prefix ./dist (or ./dist/usr/lib/debug).

Reviewed by: brooks, emaste
Differential Revision: https://reviews.freebsd.org/D33997


# 02e65672 16-Nov-2020 Brooks Davis <brooks@FreeBSD.org>

Add a guard for broken SUBDIR.${MK_FOO} use

Check for the variable SUBDIR. and error as it usually means someone
forgot to include src.opts.mk.

This guard from CheriBSD found the bugs in r367655 and r367728.

Reviewed by: bdrewery, arichardson
Obtained from: CheriBSD
Sponsored by: DARPA
Differential Revision: https://reviews.freebsd.org/D27211


# 2e1dfb34 17-Mar-2020 Brooks Davis <brooks@FreeBSD.org>

Support SUBDIR.${MK_FOO}.${MK_BAR} expresssions.

This allows simplification of Makefiles where some SUBDIR entries depend
on two things (e.g. something that depends on C++ and some other knob).

Discussed with: imp, jhb
Obtained from: CheriBSD
MFC after: 3 days
Sponsored by: DARPA


# ebd2a662 17-Sep-2018 Bryan Drewery <bdrewery@FreeBSD.org>

installdirs can be a recursive/standalone target.

Sponsored by: Dell EMC
Approved by: re (gjb)


# 1cbb5888 17-Nov-2017 Warner Losh <imp@FreeBSD.org>

Remove build system support for lint.

Differential Revision: https://reviews.freebsd.org/D13124


# f8b15066 01-Nov-2017 Bryan Drewery <bdrewery@FreeBSD.org>

make obj: Skip treewalk if AUTO_OBJ is enabled.

Sponsored by: Dell EMC Isilon


# cd19ecdb 21-Jun-2017 Bryan Drewery <bdrewery@FreeBSD.org>

Similar to r296013 for NO_ROOT, force SUBDIR_PARALLEL for buildworld WORLDTMP staging.

MFC after: 2 weeks
Sponsored by: Dell EMC Isilon


# 34d39d2c 12-Nov-2016 Bryan Drewery <bdrewery@FreeBSD.org>

DIRDEPS_BUILD: Consolidate some logic for skipping of reading Makefile.depend.

MFC after: 2 weeks
Sponsored by: Dell EMC Isilon


# 1c32eff5 21-Oct-2016 Ed Maste <emaste@FreeBSD.org>

Allow all subdirectories to be optional via SUBDIR.${MK_*}

Reviewed by: br, imp
Tested by: br
Pointy hat to: emaste
Differential Revision: https://reviews.freebsd.org/D8317


# 61018287 09-Sep-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Fix regression from r304644 which could cause .WAITs in SUBDIR to be ignored.

This was possible if a STANDALONE_SUBDIR_TARGET item came in
SUBDIR_TARGETS before 'all', which would then cause SUBDIR to
have all .WAIT's removed.

Sponsored by: Dell EMC Isilon


# 9e2f435f 31-Aug-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Add a 'make print-dir' that simply traverses all directories and prints them.

This is useful for finding connected directories.

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division


# 34ce63e5 22-Aug-2016 Bryan Drewery <bdrewery@FreeBSD.org>

For 'make <directory>' hook into the all_subdir_<directory> targets.

This fixes parallel build issues when trying to depend on ${SUBDIR}. An
example of this in share/i18n/csmapper/Makefile where mapper.dir depends
on ${SUBDIR} having been traversed and built already. Before this
change running make in that directory would build the subdirectories
twice. This led to obscure build races. While reworking that build
may be possible, the framework should not so easily allow creating such
problems.

Now depending on <directory> will properly redirect to the
all_subdir_<directory> target rather than invoking the inline shell.

This also makes 'make -jX <directory>' now respect any
SUBDIR_DEPEND_<directory> statements when SUBDIR_PARALLEL is defined.
This is not entirely intended and may be changed later.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# d9bb4215 22-Aug-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Always define the various <target>_subdir_<directory> targets, even if not used.

This is part of an effort to cleanup handling of some edge cases
involving 'make <directory>'. It also provides the targets for
other uses.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# e54caebe 22-Aug-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Stop using _SUBDIR internally for non-SUBDIR_PARALLEL builds.

This is unifying more of the logic. Rather than create targets such
as 'all: all_subdir_foo' when using SUBDIR_PARALLEL and using
'all: _SUBDIR' when not using SUBDIR_PARALLEL, always use the
expanded out <target>_subdir_<directory> pattern. When not using
SUBDIR_PARALLEL, have each directory-target depend on the previously
defined targets as to respect the *order* of SUBDIR.

Using 'make -N' now prints all directory traversals individually rather
than using a loop, since a loop is no longer used to traverse.

This is part of an effort to cleanup handling of some edge cases
involving 'make <directory>' and making it simpler in the sense
that the pattern used to build is the same for all modes.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# 997ffab7 15-Jun-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Mark targets with _SUBDIR as .PHONY.

This is mostly fixing META_MODE with realinstall wanting a .meta
file when it does not need one. These targets really should
always run though since they have _SUBDIR on them.

Approved by: re (implicit)
Sponsored by: EMC / Isilon Storage Division


# ea580d0b 01-Jun-2016 Glen Barber <gjb@FreeBSD.org>

Revert r301137 and r301163, and implement a correct fix
for the CONFS issue with dma.conf and ppp.conf.

Thank you very much to Bryan Drewery for looking into the
problem and providing this fix.

Pointyhat: gjb
Sponsored by: The FreeBSD Foundation


# ca7f4027 01-May-2016 Pedro F. Giffuni <pfg@FreeBSD.org>

share: minor spelling fixes.

Mostly comments but these tend to be user-visible.

MFC after: 2 weeks


# 19f67f69 11-Mar-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Don't even define or append subdir targets with NO_SUBDIR.

No functional change.

This prevents adding empty targets to the main called target which is
confusing for debugging.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# aae63957 26-Feb-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Import bsd.clang-analyze.mk based on NetBSD's version.

This allows 'make analyze' or 'make OBJ.clang-analyzer' to run the
Clang static analyzer and present results on stdout.

Obtained from: NetBSD (CVS Rev. 1.3)
Sponsored by: EMC / Isilon Storage Division
Differential Revision: https://reviews.freebsd.org/D5449


# 57b5a844 25-Feb-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Slightly lessen the amount of job target output for SUBDIR_PARALLEL.

Sponsored by: EMC / Isilon Storage Division


# b9c6f316 24-Feb-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Add more STANDALONE_SUBDIR_TARGETS.

Sponsored by: EMC / Isilon Storage Division


# a540ec75 24-Feb-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Show full DIRPRFX in subdir parallel target name.

For example when building, from buildworld, lib/atf/libatf-c++/tests/detail:
--- all_subdir_atf ---
is now:
--- all_subdir_lib/atf/libatf-c++/tests/detail ---

Sponsored by: EMC / Isilon Storage Division


# 58857dfc 15-Feb-2016 Bryan Drewery <bdrewery@FreeBSD.org>

Add an .ORDER for all/install.

Sponsored by: EMC / Isilon Storage Division


# 71b7fa12 07-Feb-2016 Enji Cooper <ngie@FreeBSD.org>

Simplify running the FreeBSD test suite

Replace `make regress` (legacy test make target) and `make test` (incomplete
test make target added with the FreeBSD test suite) with make check as it's
consistent with other open source projects.

`make check` defaults to running tests from `.OBJDIR`, but can be overridden
with the `CHECKDIR` variable.

Add `make checkworld` target to simplify running the FreeBSD test suite from
`TESTSBASE` (i.e. the top-level tests directory), similar to buildworld.

Document `make check` and `make checkworld` in build(7).

Other minor changes:

- Rename intermediate file (`Kyuafile.auto`) to `Kyuafile` to simplify
`make check`.
- Remove terse warnings attached to `beforetest`/`aftertest`.
- Add kyua binary check to check target in suite.test.mk; error out if it's
not found

The MFC is [partly] contingent on other build related changes being MFCed.

Differential Revision: https://reviews.freebsd.org/D4406
MFC after: 2 months
X-MFC to: stable/10
Relnotes: yes
Reviewed by: bdrewery, Evan Cramer <eccramer@gmail.com>
Sponsored by: EMC / Isilon Storage Division


# b69c69e0 19-Jan-2016 Bryan Drewery <bdrewery@FreeBSD.org>

bsd.subdir.mk: Allow easier modification of [STANDALONE_]SUBDIR_TARGETS.

This reworks r289254 and removes ALL_SUBDIR_TARGETS.

Because there is an include guard in this file there is no need for
LOCAL_ or ?= on SUBDIR_TARGETS or STANDALONE_SUBDIR_TARGETS. These can
just be set via src.conf. By the time bsd.subdir.mk is included it will
just append the values to the existing value and work fine. This allows
a consistent way to append to these variables without introducing a
LOCAL_ var for STANDALONE_SUBDIR_TARGETS or renaming the historical
SUBDIR_TARGETS.

Sponsored by: EMC / Isilon Storage Division


# ddc3c00d 19-Jan-2016 Bryan Drewery <bdrewery@FreeBSD.org>

installconfig is PARALLEL_SUBDIR safe.

Sponsored by: EMC / Isilon Storage Division


# 2231cd21 04-Dec-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Fix 'install*' and many other missing targets with DIRDEPS_BUILD.

My changes in r291635 broke 'make install*' for DIRDEPS_BUILD but also
revealed that some other targets were not guaranteed to be created if
there was a SUBDIR defined. One example is 'installfiles' was never
defined if SUBDIR was not empty.

Sponsored by: EMC / Isilon Storage Division


# 0368d219 04-Dec-2015 Bryan Drewery <bdrewery@FreeBSD.org>

The .if redirection on .WAIT is no longer needed with bmake.

Sponsored by: EMC / Isilon Storage Division


# 85874b56 04-Dec-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Fix 'afterinstall' order not being respected after my changes in r291635.

The problem was that 'afterinstall' was not coming after SUBDIRs were
installed which was the expectation at least in sys/modules for kldxref.

Reported by: np
Pointyhat to: bdrewery
Sponsored by: EMC / Isilon Storage Division


# b4f9ba38 04-Dec-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Rearrange some common logic.


# 03173d2f 01-Dec-2015 Bryan Drewery <bdrewery@FreeBSD.org>

bsd.subdir.mk: Only recurse on called targets, rather than dependencies.

This is to fix 'make all' causing it to recurse on both 'all' and 'buildconfig'
due to 'buildconfig' being in ALL_SUBDIR_TARGETS and being a dependency of
'all'.

This now adds all of the '*includes', '*files' targets as subdir targets,
allowing them to recurse.

This also removes the need for some 'realinstall' hacks in bsd.subdir.mk since
it no longer recurses; only 'install' will recurse and call the proper
'beforeinstall', 'realinstall', and 'afterinstall' in each sub-directory.

This fixes 'make includes' and 'make files' to not be a rerolled ${MAKE}
sub-shell but to rather just recurse on 'inclues' and 'files'. This avoids
various issues such as the one fixed in r289462. As such revert Makefile.inc1
back to using 'includes' which avoids an extra tree walk and parallelizes
the includes phases better.

Makefile.inc1 includes a guard so that 'make all' will not use SUBDIR_PARALLEL,
added in r289438. This is so users do not get a probably broken build if they
run 'make all' from the top-level. Before the change in this commit, the
workaround for 'make everything' was 'par-all' which would depend on 'all' and
cause a proper parallel recursion. Now that will not work so a new
_PARALLEL_SUBUDIR_OK is used to allow it.

This is still part of an effort to combine bsd.(files|incs|confs).mk and move
some of its logic out of bsd.subdir.mk, as attempted in r289282 and reverted in
r289331. This commit fixes the problems found there which was mostly double
recursing during 'includes' which would recurse on itself and 'buildincludes'
and 'installincludes', all in parallel. The logic is still in bsd.subdir.mk
for now.

I've been cautious about this commit but have experienced no breakage on the
tree except for the 'par-all' case which was already a hack. If something foo
is depending on something bar that should recurse, it is very likely that the
foo target is being recursed on already meaning that bar will still effectively
recurse once sub-directories call foo.

Discussed on: arch@
MFC after: never
Sponsored by: EMC / Isilon Storage Division


# 70d3d39e 01-Dec-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Revert r291633. Some files were missed.


# 2cdf1c99 01-Dec-2015 Bryan Drewery <bdrewery@FreeBSD.org>

bsd.subdir.mk: Only recurse on called targets, rather than dependencies.

This is to fix 'make all' causing it to recurse on both 'all' and 'buildconfig'
due to 'buildconfig' being in ALL_SUBDIR_TARGETS and being a dependency of
'all'.

This now adds all of the '*includes', '*files' targets as subdir targets,
allowing them to recurse.

This also removes the need for some 'realinstall' hacks in bsd.subdir.mk since
it no longer recurses; only 'install' will recurse and call the proper
'beforeinstall', 'realinstall', and 'afterinstall' in each sub-directory.

This fixes 'make includes' and 'make files' to not be a rerolled ${MAKE}
sub-shell but to rather just recurse on 'inclues' and 'files'. This avoids
various issues such as the one fixed in r289462. As such revert Makefile.inc1
back to using 'includes' which avoids an extra tree walk and parallelizes
the includes phases better.

Makefile.inc1 includes a guard so that 'make all' will not use SUBDIR_PARALLEL,
added in r289438. This is so users do not get a probably broken build if they
run 'make all' from the top-level. Before the change in this commit, the
workaround for 'make everything' was 'par-all' which would depend on 'all' and
cause a proper parallel recursion. Now that will not work so a new
_PARALLEL_SUBUDIR_OK is used to allow it.

This is still part of an effort to combine bsd.(files|incs|confs).mk and move
some of its logic out of bsd.subdir.mk, as attempted in r289282 and reverted in
r289331. This commit fixes the problems found there which was mostly double
recursing during 'includes' which would recurse on itself and 'buildincludes'
and 'installincludes', all in parallel. The logic is still in bsd.subdir.mk
for now.

I've been cautious about this commit but have experienced no breakage on the
tree except for the 'par-all' case which was already a hack. If something foo
is depending on something bar that should recurse, it is very likely that the
foo target is being recursed on already meaning that bar will still effectively
recurse once sub-directories call foo.

Discussed on: arch@
MFC after: never
Sponsored by: EMC / Isilon Storage Division


# 948f327e 13-Nov-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Rename META_MODE option to DIRDEPS_BUILD

This allows META_FILES option to be renamed META_MODE.
Also add META_COOKIE_TOUCH for use in targets that can benefit
from a cookie when in meta mode.

Differential Revision: https://reviews.freebsd.org/D4153
Reviewed by: bdrewery


# 0edd2832 28-Oct-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Fix regression from using .USEBEFORE in _SUBDIR in r289705.

Using .USEBEFORE had the unintended side-effect of changing the directory for
the real target ran in the current directory. For example this meant that
the 'make clean' would run in one of the SUBDIR.

Sponsored by: EMC / Isilon Storage Division
Pointyhat to: bdrewery


# ccfb12d6 23-Oct-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Rework r289778 to always parallelize known targets, without ordering.

- Rather than allow 'make clean*' to ignore dependencies, make a static
list of targets in STANDALONE_SUBDIR_TARGETS that are known to be safe.
This allows a user to override them if needed and avoids adding this feature
to user-defined targets that are in ${SUBDIR_TARGETS}. [1]
- This now also allows to force SUBDIR_PARALLEL when calling these
targets, since no dependencies are needed.

Reported by: ian [1]
Sponsored by: EMC / Isilon Storage Division
MFC after: 3 weeks
X-MFC-With: r289778


# 2e35a44c 22-Oct-2015 Bryan Drewery <bdrewery@FreeBSD.org>

For SUBDIR_PARALLEL, when doing 'make clean*' or 'make obj' there is no need to
respect SUBDIR_DEPEND_* or .WAIT.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# 7f5f4b44 21-Oct-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Remove indirection of _sub target for using _SUBDIR.

This reverts r266473 as the need for it, working around .MAKE and '+'
issues, is no longer needed after r289460. This avoids extra log
output in -j builds of '-- _sub.TARGET --' that are redundant with the
'-- TARGET --' and '-- TARGET_subdir_DIR --' entries already showing.

r266473 also made a subtle change in the ordering of _SUBDIR handling. Before
the change, SUBDIRS were recursed into after building the TARGET due to the
.USE of _SUBDIR *appending* the commands onto the TARGET. After the change
though the indirection caused TARGET to depend on _sub.TARGET which had the
_SUBDIR handling in it. This TARGET would run after recursing. However, the
SUBDIR_PARALLEL handling from r263778 has this ordering as well. Since
this has so far not been a problem, for now make this behavior for
non-SUBDIR_PARALLEL use of _SUBDIR explicit by using .USEBEFORE.
Further research may change this back to .USE as well as the
SUBDIR_PARALLEL handling and bsd.progs.mk recursing.

Sponsored by: EMC / Isilon Storage Division


# 65d88005 19-Oct-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Replace all of the duplicated logic for recursing into a subdir with one
implementation. It is duplicated at run-time but is more easily
maintainable now.

Sponsored by: EMC / Isilon Storage Division


# e92818f2 19-Oct-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Add missing .PHONY for parallel subdir target.

MFC after: 1 week
Sponsored by: EMC / Isilon Storage Division


# 90df76ab 14-Oct-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Recurse on 'buildconfig' and 'installconfig'. Remove the 'config' pseudo target.

The 'config' target isn't really needed right now so just remove it to avoid
any clashes with config(8) building. It's also likely misspelled and should
be 'configs' if we decide to add it back. This was just a convenience
target recently added.

Sponsored by: EMC / Isilon Storage Division


# e1adfb9a 14-Oct-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Re-indent the ALL_SUBDIR_TARGETS list


# b9b3f1e6 14-Oct-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Revert r289282 for now as the interaction with a directory containing
bsd.files.mk and bsd.subdir.mk is recursing too many times.


# 7b877232 13-Oct-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Replace the out-of-place includes/files/config handling in bsd.subdir.mk with
more typical ALL_SUBDIR_TARGETS entries and target hooks in bsd.incs.mk,
bsd.files.mk and bsd.confs.mk.

This allows the targets to be NOPs if unneeded and still work with the
shortcut 'make includes' to build and then install in a parallel-safe manner.

Sort and re-indent the ALL_SUBDIR_TARGETS with the new entries.

Sponsored by: EMC / Isilon Storage Division


# 1b828f96 13-Oct-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Add a note about the mysterious files/includes/config block.

This originated from r96668.


# 0b2580be 13-Oct-2015 Bryan Drewery <bdrewery@FreeBSD.org>

bsd.subdir.mk: Move all of the targets into ALL_SUBDIR_TARGETS.

Also improve documentation.

The SUBDIR_TARGETS variable should really be named LOCAL_SUBDIR_TARGETS, but
renaming it may be a surprise for downstream vendors who use this variable.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# 85564c69 13-Oct-2015 Bryan Drewery <bdrewery@FreeBSD.org>

bsd.subdir.mk: Handle cleanobj.

Before this, the target was unknown. Now it will recurse on subdirs and run
the target in the current directory. It is required to recurse as there
may be subdirs that have objs in their directory or in the object directory,
so it is not enough to just delete the objdir of the subdir parent.

MFC after: 2 weeks
Sponsored by: EMC / Isilon Storage Division


# 9b4f4918 09-Oct-2015 Baptiste Daroussin <bapt@FreeBSD.org>

Add a new bsd.confs.mk similar to bsd.files.mk or bsd.incs.mk

It defines a CONFS variable for all files supposed to be installed as a
configuration file and handle as such


# e56a42ab 25-Sep-2015 Bryan Drewery <bdrewery@FreeBSD.org>

Remove 'set -e' that are no longer needed as it is already default.

When bmake was initially imported at r241298 shell commands were no longer
ran with 'set -e' as they were before. This was fixed in r254980 so they
again always use 'set -e'.

Sponsored by: EMC / Isilon Storage Division


# e0be2e9b 26-Aug-2015 Warner Losh <imp@FreeBSD.org>

Automatically append SUBDIR.yes to the SUBDIR variable, and
remove duplicates. We cannot sort SUBDIR because many Makefiles
have .WAIT in the list which is strongly ordering. Rather than
try to second guess when to sort and when to not sort depending
on .WAIT being in the list, just remove duplicates.


# f5374544 10-Jun-2015 Simon J. Gerraty <sjg@FreeBSD.org>

Building on fmake is no longer possible so removed tests for bmake.


# e99e7dad 10-Feb-2015 Baptiste Daroussin <bapt@FreeBSD.org>

Revert r278453 we in the end won't use make distributeworld


# 101dee5d 09-Feb-2015 Baptiste Daroussin <bapt@FreeBSD.org>

Ensure make distribute respects DESTDIR


# a1c70d69 15-Jun-2014 Ian Lepore <ian@FreeBSD.org>

Create a mechanism for providing fine-grained build order dependencies
during SUBDIR_PARALLEL builds. This augments the coarse .WAIT mechanism,
which is still useful if you've got a situation such as "almost everything
depends on A and B".

Because the parallel subdir mechanism uses non-obvious mangling of
target names, which should probably remain a private detail of the
implementation, it's not easy to do things like "libfoo: libbar", so
instead the new mechanism lets you set a variable that lists dependencies:

SUBDIR_DEPEND_libfoo= libgroodah libpouet

Note that while I'm using libraries as an example here, it really has
nothing to do with the generated library files. This is really saying
"build in directory libfoo after building in the libgroodah and libpouet
directories."

This updates lib/Makefile with dependency information based on the old
almost-accurate comment block and by combing through lib/* makefiles
looking for LDADD dependencies to other libraries within lib/*.

Reviewed by: Jia-Shiun Li <jiashiun@gmail.com>


# e8a34402 10-Jun-2014 Julio Merino <jmmv@FreeBSD.org>

Put the test suite in its own tests.txz distribution file.

Force all the contents of /usr/tests to go into a separate distribution
file so that users of binary releases can easily choose to not install it.

To make this possible, we need two fixes:
- bsd.subdir.mk needs to properly honor NO_SUBDIR in all cases so that we
do not recurse into 'tests' subdirectories when we needn't. Otherwise,
we end up with some Kyuafiles in base.txz.
- etc/Makefile needs to skip installing tests in its 'distribute' target
so that a Kyuafile doesn't leak into base.txz.

Approved by: gjb


# d94068ba 20-May-2014 Simon J. Gerraty <sjg@FreeBSD.org>

Use an intermediate target to associate with _SUBDIR which is marked .MAKE
this allows make -n to do tree walks as expected without
doing anything else (as intended).
Use prefix _sub. to help avoid conflict with any real target.

Reviewed by: imp


# a14f4e2f 19-May-2014 Simon J. Gerraty <sjg@FreeBSD.org>

Revert previous change - doesn't cover all cases.


# 2cf7eab6 19-May-2014 Simon J. Gerraty <sjg@FreeBSD.org>

_SUBDIR is marked .MAKE - since it runs a sub-make.
Targets thus marked are supposed to run even with -n.
As such they should not do anything except run the sub-make.

Use an intermediate target _* to associate with _SUBDIR and which
depends on installincludes etc so that we get the correct behavior with -n.

Reviewed by: marcel


# b4bb98ed 22-Apr-2014 Ian Lepore <ian@FreeBSD.org>

Allow .WAIT to appear in SUBDIR= lists, to provide some control over
parallel build order. All subdirs before a .WAIT will be built before
any subdirs after it.

Reviewed by: imp@


# 54ff5d73 26-Mar-2014 Dimitry Andric <dim@FreeBSD.org>

Add a SUBDIR_PARALLEL option to bsd.subdir.mk, to allow make to process
all the SUBDIR entries in parallel, instead of serially. Apply this
option to a selected number of Makefiles, which can greatly speed up the
build on multi-core machines, when using make -j.

This can be extended to more Makefiles later on, whenever they are
verified to work correctly with parallel building.

I tested this on a 24-core machine, with make -j48 buildworld (N = 6):

before stddev after stddev
======= ====== ======= ======
real time 1741.1 16.5 959.8 2.7
user time 12468.7 16.4 14393.0 16.8
sys time 1825.0 54.8 2110.6 22.8

(user+sys)/real 8.2 17.1

E.g. the build was approximately 45% faster in real time. On machines
with less cores, or with lower -j settings, the speedup will not be as
impressive. But at least you can now almost max out a machine with
buildworld!

Submitted by: jilles
MFC after: 2 weeks


# a7e08b46 14-Jun-2013 Simon J. Gerraty <sjg@FreeBSD.org>

Flag recursive make targets with .MAKE (has no effect on fmake)
make -n will still exectute such targets
make -N will not.

Reviewed by: obrien


# 50c5d27b 07-Nov-2012 Simon J. Gerraty <sjg@FreeBSD.org>

Enable ATF testing.

Submitted by: Garrett Cooper
Approved by: marcel (mentor)


# 0815243c 06-Oct-2012 Marcel Moolenaar <marcel@FreeBSD.org>

Add support for bmake. This includes:
1. Don't do upgrade_checks when using bmake. As long as we have WITH_BMAKE,
there's a bootstrap complication in ths respect. Avoid it. Make the
necessary changes to have upgrade_checks work wth bmake anyway.
2. Remove the use of -E. It's not needed in our build because we use ?= for
the respective variables, which means that we'll take the environment
value (if any) anyway.
3. Properly declare phony targets as phony as bmake is a lot smarter (and
thus agressive) about build avoidance.
4. Make sure CLEANFILES is complete and use it on .NOPATH. bmake is a lot
smarter about build avoidance and should not find files we generate in
the source tree. We should not have files in the repository we want to
generate, but this is an easier way to cross this hurdle.
5. Have behavior under bmake the same as it is under make with respect to
halting when sub-commands fail. Add "set -e" to compound commands so
that bmake is informed when sub-commands fail.
6. Make sure crunchgen uses the same make as the rest of the build. This
is important when the make utility isn't called make (but bmake for
example).
7. While here, add support for using MAKEOBJDIR to set the object tree
location. It's the second alternative bmake looks for when determining
the actual object directory (= .OBJDIR).

Submitted by: Simon Gerraty <sjg@juniper.net>
Submitted by: John Van Horne <jvanhorne@juniper.net>


# 7750ad47 22-Aug-2012 Marcel Moolenaar <marcel@FreeBSD.org>

Sync FreeBSD's bmake branch with Juniper's internal bmake branch.

Requested by: Simon Gerraty <sjg@juniper.net>


# a7d5f7eb 19-Oct-2010 Jamie Gritton <jamie@FreeBSD.org>

A new jail(8) with a configuration file, to replace the work currently done
by /etc/rc.d/jail.


# fe0506d7 09-Mar-2010 Marcel Moolenaar <marcel@FreeBSD.org>

Create the altix project branch. The altix project will add support
for the SGI Altix 350 to FreeBSD/ia64. The hardware used for porting
is a two-module system, consisting of a base compute module and a
CPU expansion module. SGI's NUMAFlex architecture can be an excellent
platform to test CPU affinity and NUMA-aware features in FreeBSD.


# 4bc9493e 06-Dec-2009 Ed Schouten <ed@FreeBSD.org>

Make `make cleanilinks' work in /sys/modules.

cleanilinks wasn't listed in <bsd.subdir.mk>. Instead of adding it to
/sys/modules/Makefile, we'd better just add it to <bsd.subdir.mk>
directly, so we don't need to change files like /sys/modules/sound/Makefile
as well. This means you can finally clean up all those dangling symlinks
created by individual module compilation at once.


# d7f03759 19-Oct-2008 Ulf Lilleengen <lulf@FreeBSD.org>

- Import the HEAD csup code which is the basis for the cvsmode work.


# 157deb6a 07-Dec-2007 Ruslan Ermilov <ru@FreeBSD.org>

Make "manlint" recursive.

Prodded by: obrien


# 3d7f65df 31-May-2005 Ruslan Ermilov <ru@FreeBSD.org>

For ${SUBDIR} targets, change the type of dependency operator from `::'
to `:', so that it stays compatible with a stale dependency recorded in
.depend when the type of "foo" changes from file to directory or back.
Compensate for the loss of the "If no sources are specified, the target
is always re-created" feature by marking these targets with the .PHONY
attribute. While here, fix a bug in the target's script (nobody uses
these targets apparently).


# f5e7a58e 13-Feb-2005 Ruslan Ermilov <ru@FreeBSD.org>

Add a SUBDIR_TARGETS variable which can be set to a list of
additional targets that will cause descending into subdirs.
Example:

cd /sys/modules; make load SUBDIR_TARGETS=load

(But don't try it with your pet.)

Submitted by: Alexey Klimov
PR: 47601


# d966048e 06-Jan-2005 Kirill Ponomarev <krion@FreeBSD.org>

Remove trailing spaces.


# d0beb853 07-Sep-2004 Warner Losh <imp@FreeBSD.org>

Although 'Unanimous Consent' appears to be a well defined and used in
the US Senate, Canadian Parliament and Australian Senate, it was
causing some confusion. After some consultation with Mark Murray,
change this to 'without objection' since often times a plain-speaking
term is preferable to a regionally used term.

Also, clarify that this procedure is to be used when for more mundane
matters that need a sanity check, but don't need the whole, ponderous
voting proceedure that more difficult issues require. Core members
that read email in any given 48 hour period are trusted enough to know
the difference and to provide the sanity check as necessary.

Reviewed by: markm


# acabf29a 09-Aug-2004 Hartmut Brandt <harti@FreeBSD.org>

Use the '+' flag to make make recurse into sub-directories even when
given -n. For POLA reasons this behaviour is switched on only when
at least two -n flags are given to make. One -n flag keeps the old behaviour
of showing the shell command that would recurse into the sub-directories.

Discussed with: ru


# 8f463ff4 12-Jul-2002 Ruslan Ermilov <ru@FreeBSD.org>

Moved the `distribute' target from bsd.obj.mk to bsd.subdir.mk,
to make it call `install' in the bsd.subdir.mk-driven makefiles
too. (share/examples/Makefile,v 1.29 changed the bsd.prog.mk
to bsd.subdir.mk and many stuff was lost during "make release".
I then merged this change in rev. 1.28.2.2 to work around the
namespace pollution (FILES) in this makefile.)

There was an added complexity here. Both the `distribute' and
`install' targets are recursive (they propagate to SUBDIRs).
So `distribute' first calls `install' in the ${.CURDIR}, then
calls `distribute' in each SUBDIR, etc. The problem is that
`install' (being also recursive) causes the stuff from SUBDIR
to be installed twice, first time thru `install' in ${.CURDIR}
triggered by `distribute', second time by `distribute' run in
the SUBDIR. This problem is not new, but it became apparent
only after I moved the `distribute' target from bsd.obj.mk to
bsd.subdir.mk. My first attempt testing the fix failed due to
this, because the whole world was distributed twice, causing
all the imaginable mess (kerberos5 stuff was installed into both
"base" and "krb5" dists, there was /sbin/init.bak, etc.)
I say the problem is not new because bsd.prog.mk and bsd.lib.mk
makefiles with SUBDIR (even without this fix) had this problem
for years. Try e.g. running ``make distribute DISTDIR=/foo''
from usr.bin/bzip2 or from lib/libcom_err (without the fix) and
watch the output.

So the solution was to make `install' behave non-recursive when
executed by `distribute'. My first attempt in passing SUBDIR=
to the `install' in the `distribute' body failed because of the
way how src/Makefile and src/Makefile.inc1 communicate with each
other. SUBDIR='s assignment precedence on the "make install
SUBDIR=" command line is lowered after src/Makefile wrapper calls
"make ... -f ${.CURDIR}/Makefile.inc1 install" because SUBDIR=
is moved into environment, and Makefile.inc1's assignments now
take higher precedence. This may be fixed someday when we merge
Makefile with Makefile.inc1. For now, this is implemented as a
NO_SUBDIR knob.

Spotted by: Dmitry Pryanishnikov <dmitry@atlantis.dp.ua>
Prodded by: des
MFC after: 3 days


# 1220a024 01-Jul-2002 Ruslan Ermilov <ru@FreeBSD.org>

Get rid of the bogus dependencies between beforeinstall, realinstall,
and afterinstall targets. Make sure they are run in sequence in the
-j case.

This fixes the recent breakage with beforeinstall being run _after_
realinstall.

Reported by: knu


# af2dc868 03-Jun-2002 Ruslan Ermilov <ru@FreeBSD.org>

Reimplement FILES support using bsd.files.mk with the
same set of features as in recently added bsd.incs.mk
(FILESGROUPS, accessibility from both bsd.prog.mk and
bsd.lib.mk, de-pessimized typical installation path,
etc.) New standard targets: buildfiles, installfiles,
and files (buildfiles + installfiles).


# 5d862037 15-May-2002 Ruslan Ermilov <ru@FreeBSD.org>

Rename `includes' to `buildincludes'.
Rename `incsinstall' to `installincludes'.
Make `includes' a -j safe shortcut for `buildincludes' + `installincludes'.
`buildincludes' and `installincludes' are SUBDIR friendly, if run directly.


# c7b111cb 12-May-2002 Ruslan Ermilov <ru@FreeBSD.org>

Added new bsd.incs.mk which handles installing of header files
via INCS. Implemented INCSLINKS (equivalent to SYMLINKS) to
handle symlinking include files. Allow for multiple groups of
include files to be installed, with the powerful INCSGROUPS knob.
Documentation to follow.

Added standard `includes' and `incsinstall' targets, use them
in Makefile.inc1. Headers from the following makefiles were
not installed before (during `includes' in Makefile.inc1):

kerberos5/lib/libtelnet/Makefile
lib/libbz2/Makefile
lib/libdevinfo/Makefile
lib/libform/Makefile
lib/libisc/Makefile
lib/libmenu/Makefile
lib/libmilter/Makefile
lib/libpanel/Makefile

Replaced all `beforeinstall' targets for installing includes
with the INCS stuff.

Renamed INCDIR to INCSDIR, for consistency with FILES and SCRIPTS,
and for compatibility with NetBSD. Similarly for INCOWN, INCGRP,
and INCMODE.

Consistently use INCLUDEDIR instead of /usr/include.

gnu/lib/libstdc++/Makefile and gnu/lib/libsupc++/Makefile changes
were only lightly tested due to the missing contrib/libstdc++-v3.
I fully tested the pre-WIP_GCC31 version of this patch with the
contrib/libstdc++.295 stuff.

These changes have been tested on i386 with the -DNO_WERROR "make
world" and "make release".


# afeaaa84 07-May-2002 Ruslan Ermilov <ru@FreeBSD.org>

Added internal, non-recursive (SUBDIR) versions of the `all-man'
and `maninstall' targets. This fixes the issue where each subdir
was descended into twice during "make all", and also resurrects
the standardization of `maninstall'.

Urged by: bde


# 6bde859f 26-Apr-2002 Ruslan Ermilov <ru@FreeBSD.org>

Milestone #1 in cross-arch make releases.

Do not install games and profiled libraries to the ${CHROOTDIR}
with the initial installworld.

Eliminate the need in the second installworld. For that, make sure
_everything_ is built in the "world" environment, using the right
tool chain.

Added SUBDIR_OVERRIDE helper stuff to Makefile.inc1. Split the
buildworld process into stages, and skip some stages when
SUBDIR_OVERRIDE is set (used to build crypto, krb4, and krb5
dists).

Added NO_MAKEDB_RUN knob to Makefile.inc1 to avoid running
makewhatis(1) at the end of installworld (used when making crypto,
krb4, and krb5 dists).

In release/scripts/doFS.sh, ensure that the correct boot blocks are
used.

Moved the creation of the "crypto" dist from release.5 to
release.2.

In release.3 and doMFSKERN, build kernels in the "world"
environment. KERNELS now means "additional" kernels, GENERIC is
always built.

Ensure we build crunched binaries in the "world" environment.
Obfuscate release/Makefile some more (WMAKEENV) to achieve this.

Inline createBOOTMFS target.

Use already built GENERIC kernel modules to augment mfsfd's
/stand/modules. GC doMODULES as such.

Assorted fixes:

Get rid of the "afterdistribute" target by moving the single use
of it from sys/Makefile to etc/Makefile's "distribute".

Makefile.inc1: apparently "etc" no longer needs to be last for
"distribute" to succeed.

gnu/usr.bin/perl/library/Makefile.inc: do not override the
"install" and "distribute" targets, do it the "canonical" way.

release/scripts/{man,cat}pages-make.sh: make sure Perl manpages and
catpages appear in the right dists. Note that because Perl does
not respect the MANBUILDCAT (and NOMAN), this results in a loss of
/usr/share/perl/man/cat* empty directories. This will be fixed
soon.

Turn MAKE_KERBEROS4 into a plain boolean variable (if it is set it
means "make KerberosIV"), as documented in the make.conf(5)
manpage. Most of the userland makefiles did not test it for "YES"
anyway.

XXX Should specialized kerberized libpam versions be included into
the krb4 and krb5 dists? (libpam.a would be incorrect anyway if
both krb4 and krb5 dists were choosen.)

Make sure "games" dist is made before "catpages", otherwise games
catpages settle in the wrong dist.

Fast build machine provided by: Igor Kucherenko <kivvy@sunbay.com>


# 2cbc81ff 24-Apr-2002 Ruslan Ermilov <ru@FreeBSD.org>

The install.debug and reinstall.debug targets are needed solely
to build kernel and kernel modules so stop supporting them in
bsd.subdir.mk and reimplement them in kern.post.mk and kmod.mk
as special versions of the install and reinstall targets, and
only define them if DEBUG is also defined (when debug versions
are really built).

Prompted by: bde


# 01df2ec3 23-Apr-2002 David E. O'Brien <obrien@FreeBSD.org>

Change the name of the 'bin' distribution to 'base'.
This is done since it contains much more than /bin, and also gets in the
way when making a combined install+fixit CD.

OK'ed by: jkh


# b25a566d 23-Apr-2002 Ruslan Ermilov <ru@FreeBSD.org>

Merge bsd.obj.mk's version of the _SUBDIR target with bsd.subdir.mk.

Ensure all standard targets honor SUBDIR. Now `make obj' descends into
SUBDIRs even if NOOBJ is set (some descendants may still need an object
directory, but we do not have such precedents). Now `make install' in
non-bsd.subdir.mk makefiles runs `afterinstall' target _after_ `install'
in SUBDIRs, like we do in bsd.subdir.mk. Nothing depended on the wrong
order anyway.

Fixed `distribute' targets (except for the bsd.subdir.mk version) so that
they do not depend on _SUBDIR; `distribute' calls `install' which already
depends on _SUBDIR.

De-standardize `maninstall', otherwise manpages would be installed twice.
(To be revised later.)


# 2bdaf7e8 17-Apr-2002 Ruslan Ermilov <ru@FreeBSD.org>

Don't include bsd.own.mk from sys.mk, this makes it impossible
to use ``.if defined()'' inside bsd.own.mk to test for defines
in individual makefiles. For example, setting DEBUG_FLAGS in
Makefile didn't take the desired effect on the STRIP assignment.

Added bsd.init.mk (like in NetBSD) that handles the inclusion
of ../Makefile.inc and bsd.own.mk from all bsd.*.mk files that
"build something".

Back out bsd.own.mk,v 1.15: moved OBJFORMAT initialization back
to sys.mk (several source tree makefiles want to check it early)
and removed MACHINE_ARCH initialization (it's hard to see from
looking at the commitlogs what the problem was at the time, but
now it serves no purpose).

Prohibit the direct inclusion of bsd.man.mk and bsd.libnames.mk.

Protect bsd.obj.mk from repetitive inclusion. Prohibiting the
direct inclusion of bsd.obj.mk might be a good idea too.


# 115a409e 06-Feb-2002 Ruslan Ermilov <ru@FreeBSD.org>

Back out revision 1.23 (SUBDIR_CHANGE).

Not objected to by: bde, eivind


# a4c00586 26-Oct-2001 Dag-Erling Smørgrav <des@FreeBSD.org>

Support the "install.debug" and "reinstall.debug" targets for kernel modules.
Small tweaks to kldxref may be necessary to avoid the surprising (but harm-
less) behaviour of 'kldload foo' loading foo.ko.debug instead of foo.ko if
it is present in the kernel directory.

Approved by: a week of silence on -arch
MFC after: 2 weeks


# 918fb560 27-Mar-2001 Ruslan Ermilov <ru@FreeBSD.org>

Make it possible to build manpages for the entire source tree.


# e461bad7 02-Jan-2000 Marcel Moolenaar <marcel@FreeBSD.org>

Fix typo.

Submitted by: Richard Wackerbarth <rkw@dataplex.net>


# 0917704b 14-Nov-1999 Marcel Moolenaar <marcel@FreeBSD.org>

${MACHINE} -> ${MACHINE_ARCH}

All Makefiles now use MACHINE_ARCH for the target architecture.
Unification is required for cross-building.

Tags added to:
sys/boot/Makefile
sys/boot/arc/loader/Makefile
sys/kern/Makefile
usr.bin/cpp/Makefile
usr.bin/gcore/Makefile
usr.bin/truss/Makefile

usr.bin/gcore/Makefile:
fixed typo: MACHINDE -> MACHINE_ARCH


# 7f3dea24 27-Aug-1999 Peter Wemm <peter@FreeBSD.org>

$Id$ -> $FreeBSD$


# 760a0960 20-Mar-1999 Bruce Evans <bde@FreeBSD.org>

Restored objlink. The previous commit was confused about the difference
between OBJLINK and objlink.


# 5beaada3 14-Mar-1999 Mark Murray <markm@FreeBSD.org>

Bitrot. Remove objlink as it is not pleasant to be downwind.

PR: 8071
Reviewed by: Sheldon Hearn <sheldonh@iafrica.com>


# e0301e5d 08-Aug-1998 Peter Wemm <peter@FreeBSD.org>

Make ../Makefile.inc handling more consistant to prevent multiple includes
when certain .mk files include other .mk files. This will remove the
need for multiple include protection in some other makefiles around the
tree (and helps some elf conditionals).


# 400f992e 06-May-1998 Wolfram Schneider <wosch@FreeBSD.org>

Delete stale comment.
Pointed out by: bde


# 55d7643e 28-Mar-1998 Eivind Eklund <eivind@FreeBSD.org>

Support for fine-grained external control of subdir building.


# f342a1c4 26-Mar-1998 Eivind Eklund <eivind@FreeBSD.org>

Remove special handling of 'tags' for complex subdir systems
(presently only used in tip; should have been used by e.g. pkg_add).

Submitted by: bde


# 1ed9b1c3 23-Mar-1998 Eivind Eklund <eivind@FreeBSD.org>

Support new version of global.

Submitted by: Shigio Yamaguchi <shigio@wafu.netgate.net>
Tested by: make buildworld


# 69b87d3e 12-Mar-1998 Eivind Eklund <eivind@FreeBSD.org>

Introduce the 'regress' target.

Silently approved by: -hackers, -current


# 2504f8dc 15-Nov-1997 Wolfram Schneider <wosch@FreeBSD.org>

target(__target) -> target(${__target})

PR: bin/4736
Submitted by: Martin Kammerhofer <dada@sbox.tu-graz.ac.at>

Index: bsd.subdir.mk
===================================================================
RCS file: /usr/cvs/src/share/mk/bsd.subdir.mk,v
retrieving revision 1.18
diff -u -r1.18 bsd.subdir.mk
--- bsd.subdir.mk 1997/06/21 15:40:34 1.18
+++ bsd.subdir.mk 1997/11/09 18:04:33
@@ -59,7 +59,7 @@

.for __target in all checkdpadd clean cleandir depend lint \
maninstall obj objlink
-.if !target(__target)
+.if !target(${__target})
${__target}: _SUBDIRUSE
.endif
.endfor


# 398ac038 21-Jun-1997 Jordan K. Hubbard <jkh@FreeBSD.org>

Change the distribute targets so that a given item in our source tree
can place itself into n distributions, where n >= 1.


# 6eb5e456 13-Apr-1997 Jordan K. Hubbard <jkh@FreeBSD.org>

Support GLOBAL style tags.


# d54266d5 30-Mar-1997 Marc G. Fournier <scrappy@FreeBSD.org>

Remove ${MAKEFLAGS} on recommendation by Bruce, mainly because the reason
for adding it was so that -j3 carried through on a make -j3 world, but found
at least one circumstance where it breaks 'make depend'


# f457e46e 30-Mar-1997 Marc G. Fournier <scrappy@FreeBSD.org>

Add ${MAKEFLAGS} to ${MAKE} in _SUBDIRUSE so that something like
'make -j3 world' works

Jordan points out that this may not be the only place this is required to be
added, but so far, its the only one I've found to break -j3


# f5d738c8 08-Mar-1997 Wolfram Schneider <wosch@FreeBSD.org>

Add comments.


# b97fa2ef 22-Feb-1997 Peter Wemm <peter@FreeBSD.org>

Revert $FreeBSD$ to $Id$


# 1130b656 14-Jan-1997 Jordan K. Hubbard <jkh@FreeBSD.org>

Make the long-awaited change from $Id$ to $FreeBSD$

This will make a number of things easier in the future, as well as (finally!)
avoiding the Id-smashing problem which has plagued developers for so long.

Boy, I'm glad we're not using sup anymore. This update would have been
insane otherwise.


# 373fdd96 20-Sep-1996 Bruce Evans <bde@FreeBSD.org>

Added a `checkdpadd' target to help check that ${DPADD} is consistent with
${LDADD}. It doesn't handle internal libraries very well yet.


# 4c4f0f7d 24-Jun-1996 Jordan K. Hubbard <jkh@FreeBSD.org>

Add default targets for cleandepend and objlink.
Submitted by: Michael Hancock <michaelh@cet.co.jp>


# 8e1a411f 05-Apr-1996 Wolfram Schneider <wosch@FreeBSD.org>

remove BINGRP?=, BINOWN?=, BINMODE?=, STRIP?=
use .for loop for common targets


# ffd87c07 25-Feb-1995 Poul-Henning Kamp <phk@FreeBSD.org>

"make distribute" have changed, beware if you use it.


# 1df516f2 23-Jan-1995 Jordan K. Hubbard <jkh@FreeBSD.org>

Eliminate a bogus stray tab.


# d9584d76 14-Jan-1995 Jordan K. Hubbard <jkh@FreeBSD.org>

Change DISTRIBUTION names. Also make bsd.doc.mk go to doc distribution,
not bin. Hmmm.


# 55ff8fb1 13-Nov-1994 Poul-Henning Kamp <phk@FreeBSD.org>

Add a new "distribute" target. This is a variant of install, which will
put the stuff into the right "distribution". As default things end up
in "bindist".

Normal (ie: most) makefiles know naught of this.

More commits will follow, which will direct various parts of the tree
into the distribution we want them in.

Some of the grief of being release-engineer is supposed to go away with this.


# e82b0b99 16-Sep-1994 Jordan K. Hubbard <jkh@FreeBSD.org>

Add support for DEBUG_FLAGS. If you say something like:

make DEBUG_FLAGS=-g2

You can compile something for debugging at debugging level 2.
It will also take care not to strip the resulting executable(s).


# 3c303ff2 28-Aug-1994 Bruce Evans <bde@FreeBSD.org>

Use ${ECHODIR} instead of `echo' for printing directory names so that
`make -ss' is very quiet.


# 3585b293 04-Aug-1994 Garrett Wollman <wollman@FreeBSD.org>

Spplat our 1.1.5 `mk' ifiles over the top of the 4.4 ones. So far
as I can tell, this is ts the right thing to do.


# afe61c15 30-May-1994 Rodney W. Grimes <rgrimes@FreeBSD.org>

BSD 4.4 Lite Share Sources