History log of /freebsd-11.0-release/Makefile
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
# 304494 19-Aug-2016 bdrewery

MFS r304472:

MFC r304006:

Avoid showing the bootstrap make command for check-old, etc.

Approved by: re (gjb)


# 304494 19-Aug-2016 bdrewery

MFS r304472:

MFC r304006:

Avoid showing the bootstrap make command for check-old, etc.

Approved by: re (gjb)

# 303975 11-Aug-2016 gjb

Copy stable/11@r303970 to releng/11.0 as part of the 11.0-RELEASE
cycle.

Prune svn:mergeinfo from the new branch, and rename it to RC1.

Update __FreeBSD_version.

Use the quarterly branch for the default FreeBSD.conf pkg(8) repo and
the dvd1.iso packages population.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation

# 303359 27-Jul-2016 bdrewery

MFC r303272,r303273:

r303272:
SYSTEM_COMPILER: Rework the logic to allow a 'make test-system-compiler'.
r303273:
Fix empty WANT_COMPILER_TYPE when neither compiler is bootstrapped.

Approved by: re (kib)


# 302408 08-Jul-2016 gjb

Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle.
Prune svn:mergeinfo from the new branch, as nothing has been merged
here.

Additional commits post-branch will follow.

Approved by: re (implicit)
Sponsored by: The FreeBSD Foundation


# 302088 22-Jun-2016 bdrewery

WITH_META_MODE: Whitelist 'make kernel-toolchain'

Approved by: re (blanket, META_MODE)
Sponsored by: EMC / Isilon Storage Division


# 302067 21-Jun-2016 bdrewery

Fix top-level builds with fmake / 9.x.

Reported by: allanjude
Approved by: re (marius)
Sponsored by: EMC / Isilon Storage Division


# 301940 16-Jun-2016 bdrewery

WITH_META_MODE: Whitelist 'make kernel' and 'make world'.

installkernel is technically META_MODE safe but doesn't need an explicit
approval to use it since it's all disabled via .PHONY.

world uses 'make -B installworld' which already will disable META_MODE
via the -B (.MAKE.MODE=compat) usage.

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


# 301938 15-Jun-2016 bdrewery

tinderbox/universe: Only show arm64 warning if it was in the TARGETS list.

This was a flaw in my change in r287903 but also in the original change
in r282156 since it used empty(${TARGETS}) rather than empty(TARGETS).

Reported by: lidl
Approved by: re (gjb)
Sponsored by: EMC / Isilon Storage Division


# 301894 14-Jun-2016 bdrewery

Fix makeman showing dependency of DIRDEPS_BUILD->META_MODE.

This broke in r301887 with the meta mode whitelist. 'make showconfig'
still needs WITH_META_MODE support.

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


# 301893 14-Jun-2016 bdrewery

Fix build from stable/10 with fmake.

This was broken in r301888.

fmake does not look in share/mk by default and thus does not yet
have MK_META_MODE set with default.

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


# 301888 14-Jun-2016 bdrewery

WITH_META_MODE: Lessen the filemon(4) requirement scope.

- Move the sys.mk filemon requirement to bsd.init.mk as a warning.
This is intended only to show when building directly in a subdirectory
without filemon loaded.
- Move the error into Makefile and only apply it when building
from the META_TGT_WHITELIST target list.

-DNO_FILEMON can be used to suppress both the warning and the error but
makes WITH_META_MODE less useful. It will only compare build commands
in this mode rather than track all dependencies.

This fixes installing from a jail which doesn't need filemon in this
phase [1].

Reported by: Nikolai Lifanov <lifanov@mail.lifanov.com> [1]
Approved by: re (implicit)
Sponsored by: EMC / Isilon Storage Division


# 301887 14-Jun-2016 bdrewery

WITH_META_MODE: Whitelist targets that are meta-mode-safe.

META_TGT_WHITELIST is added to define which build targets are safe for
meta mode. See comments for more details.

This fixes 'make delete-old-libs' to properly show the interactive
prompt.

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


# 301885 14-Jun-2016 bdrewery

Add more missing .PHONY

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


# 301472 05-Jun-2016 bdrewery

Only include bsd.compiler.mk for bmakes that use -m .../share/mk by default.

Otherwise they error when trying to include the file, which also has
its own dependencies.

Sponsored by: EMC / Isilon Storage Division


# 301466 05-Jun-2016 bdrewery

WITH_META_MODE: Enable bmake's missing meta rebuild feature


# 301465 05-Jun-2016 bdrewery

Fix bmake version upgrade logic to use the new bmake.

Otherwise it was only used on the next build.

This was a flaw in r295980.

MFC after: 3 days
Sponsored by: EMC / Isilon Storage Division


# 300119 18-May-2016 imp

Make armv6 hard float abi by default. Kill armv6hf.
Allow CPUTYPE=soft to build the current soft-float abi libraries.
Add UPDATING entry to announce this.

Approved by: re@ (gjb)


# 298221 18-Apr-2016 bdrewery

Follow-up r298220: Don't pass down META_MODE which will still enable it.

Reported by: Nikolai Lifanov <lifanov@mail.lifanov.com>
Sponsored by: EMC / Isilon Storage Division


# 298220 18-Apr-2016 bdrewery

META_MODE: Disable during installworld and similar.

META_MODE may create cookies during staging of files to WORLDTMP that would
also prevent installation of the files to the final DESTDIR, since the cookie
already exists. This is not yet the case but will be soon. Prevent other
similar issues by disabling META_MODE for any top-level install targets.

Sponsored by: EMC / Isilon Storage Division


# 298107 16-Apr-2016 gjb

Merge the projects/release-pkg branch to head.

This allows packaging the base system with pkg(8), including
but not limited to providing the ability to provide upstream
binary update possibilities for non-tier-1 architectures.

This merge is a requirement of the 11.0-RELEASE, and as such,
thank you to everyone that has tested the project branch.

Documentation in build(7) etc. is still somewhat sparse, but
updates to those parts will follow.

Sponsored by: The FreeBSD Foundation


# 297993 14-Apr-2016 bdrewery

Mark some more .PHONY targets.

Sponsored by: EMC / Isilon Storage Division


# 297988 14-Apr-2016 bdrewery

Define the *soft targets properly.

Sponsored by: EMC / Isilon Storage Division


# 297434 31-Mar-2016 bdrewery

Remove the old depend (mkdep) code and make FAST_DEPEND the one true way.

Reviewed by: emaste, hselasky (partial), brooks (brief)
Discussed on: arch@
Sponsored by: EMC / Isilon Storage Division
Differential Revision: https://reviews.freebsd.org/D5742


# 296779 12-Mar-2016 imp

Use the newly minted Makefile.libcompat to implement libsoft libraries
for the armv6 ABI switch. This also make WITH_LIBSOFT functional on
the arm platform. As a transition thing, this seems to work even
without switching the ABI (we basically build the same libraries
twice when MK_LIBSOFT=yes until the ABI cut over next
month). MK_LIBSOFT remains default no.


# 296676 11-Mar-2016 bdrewery

Avoid MK_TESTS error on stable/10 by just preventing SUBDIR recursion.


# 296675 11-Mar-2016 bdrewery

Avoid bmake upgrade NO_MAN warning by just setting MAN to empty.

Suggested by: imp


# 296671 11-Mar-2016 bdrewery

Revert r296645 as it breaks stable/10->head builds.


# 296646 11-Mar-2016 bdrewery

FAST_DEPEND: Use .dinclude to enable full .depend logic in bmake.

The inclusion of .MAKE.DEPENDFILE (.depend) has special logic in make
to ignore stale/missing dependencies. bmake 20160220 added a '.dinclude'
directive that uses the special logic for .depend when including the file.

This fixes a build error when a file is moved or deleted that exists in a
.depend.OBJ file. This happened in r292782 when sha512c.c "moved" and an
incremental build of lib/libmd would fail with:
make: don't know how to make /usr/src/lib/libcrypt/../libmd/sha512c.c. Stop

Now this will just be seen as a stale dependency and cause a rebuild:
make: /usr/obj/usr/src/lib/libmd/.depend.sha512c.o, 13: ignoring stale .depend for /usr/src/lib/libcrypt/../libmd/sha512c.c
--- sha512c.o ---
...
This rebuild will only be done once since the .depend.sha512c.o will
be updated on the build with the -MF flags.

This also removes -MP being passed for the .depend.OBJ generation (which
would create fake targets for system headers) since the logic is no
longer needed to protect from missing files.

Sponsored by: EMC / Isilon Storage Division


# 296645 11-Mar-2016 bdrewery

Fix bmake upgrade NO_MAN warnings.

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


# 296643 11-Mar-2016 bdrewery

Fix make -n upgrade_checks.

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


# 296549 08-Mar-2016 bdrewery

Don't ever create object directories here with MK_AUTO_OBJ.

Sponsored by: EMC / Isilon Storage Division


# 296014 24-Feb-2016 bdrewery

Add order for installworld/installkernel.

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


# 295980 24-Feb-2016 bdrewery

Support a WANT_MAKE_VERSION.

This will be used soon for .dinclude support in FAST_DEPEND.

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


# 295455 10-Feb-2016 bapt

Fix make universe when running with non POSIX/C locales using a locale sensitive
pattern

Reported by: many
Submitted by: jilles


# 295380 07-Feb-2016 ngie

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


# 295161 02-Feb-2016 bdrewery

Add order for installworld/distribution.

Sponsored by: EMC / Isilon Storage Division


# 295099 31-Jan-2016 ian

Add make universe targets "kernels" and "worlds".

"make kernels" is now shorthand for "make universe -DMAKE_JUST_KERNELS"
"make worlds" is now shorthand for "make universe -DMAKE_JUST_WORLDS"

The kernels target includes modules (unless you add -DNO_MODULES).

And of course you can still add all the other universe options, such as
"make kernels TARGETS=arm" to build kernels for all arm arches, or
TARGET_ARCH=armv6 to build all armv6 kernels, etc.

Reviewed by: imp


# 293342 07-Jan-2016 bdrewery

Always try to upgrade to bmake if not already using it.

This is mostly targetting stable/10 which requires bmake to build and
has issues upgrading from <10.

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


# 293288 07-Jan-2016 bdrewery

Revert r293286. It was not intended to come in yet.


# 293286 07-Jan-2016 bdrewery

Move the MAKEOBJDIRPREFIX value guard to sys.mk and expand to MAKEOBJDIR.

This will ensure that the variable was not set as a make override, in
make.conf, src.conf or src-env.conf. It allows setting the value in
src-env.conf when using WITH_AUTO_OBJ since that case properly handles
changing .OBJDIR (except if MAKEOBJDIRPREFIX does not yet exist which is
being discussed to be changed).

This change allows setting a default MAKEOBJDIRPREFIX via local.sys.env.mk.

Sponsored by: EMC / Isilon Storage Division


# 292217 14-Dec-2015 emaste

Update advice on obj disk space requirements

The Makefile is not the best place for this information, but at least it
is now less out of date.


# 292124 11-Dec-2015 br

Start support for the RISC-V 64-bit architecture developed by UC Berkeley.

RISC-V is a new ISA designed to support computer research and education, and
is now become a standard open architecture for industry implementations.

This is a minimal set of changes required to run 'make kernel-toolchain'
using external (GNU) toolchain.

The FreeBSD/RISC-V project home: https://wiki.freebsd.org/riscv.

Reviewed by: andrew, bdrewery, emaste, imp
Sponsored by: DARPA, AFRL
Sponsored by: HEIF5
Differential Revision: https://reviews.freebsd.org/D4445


# 291605 01-Dec-2015 bdrewery

Fix errors being ignored in many phases of the build since the bmake integration.

Say it with me, "I will not chain commands with && in Makefiles"

This was originally fixed and explained quite well by bde@ in r36074. The
initial bmake integration caused 'set -e' to stop being used which lead to
r252419. Later 'set -e' expectations were fixed with bmake in r254980.

Because of the && here, errors would be ignored when building in parallel and
a dependency failed. Such as bootstrap-tools since it builds everything in
parallel. If any tool failed in obj/depend/all, it would just ignore the error
and continue to build. This later would result in cascaded errors that only
confused the real issue. This could also cause commands after the failed
command to still execute, leading to more confusion.

This should be fine if the command is in a sub-shell such as: (cmd1 && cmd2)

This reverts r252419.

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


# 290816 14-Nov-2015 sjg

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


# 290626 09-Nov-2015 bdrewery

Move 'make cleandir' from Makefile to Makefile.inc1.

This leads the way for fixing cross-build cleanup, and eventually replacing
'cleandir' with it during the build.

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


# 290526 08-Nov-2015 bdrewery

Add built-in ccache build support via WITH_CCACHE_BUILD option.

ccache is mostly beneficial for frequent builds where -DNO_CLEAN is not
used to achieve a safe pseudo-incremental build. This is explained in
more detail upstream [1] [2]. It incurs about a 20%-28% hit to populate the
cache, but with a full cache saves 30-50% in build times. When combined with
the WITH_FAST_DEPEND feature it saves up to 65% since ccache does cache the
resulting dependency file, which it does not do when using mkdep(1)/'CC
-E'. Stats are provided at the end of this message.

This removes the need to modify /etc/make.conf with the CC:= and CXX:=
lines which conflicted with external compiler support [3] (causing the
bootstrap compiler to not be built which lead to obscure failures [4]),
incorrectly invoked ccache in various stages, required CCACHE_CPP2 to avoid
Clang errors with parenthesis, and did not work with META_MODE.

The option name was picked to match the existing option in ports. This
feature is available for both in-src and out-of-src builds that use
/usr/share/mk.

Linking, assembly compiles, and pre-processing avoid using ccache since it is
only overhead. ccache does nothing special in these modes, although there is
no harm in calling it for them.

CCACHE_COMPILERCHECK is set to 'content' when using the in-tree bootstrap
compiler to hash the content of the compiler binary to determine if it
should be a cache miss. For external compilers the 'mtime' option is used
as it is more efficient and likely to be correct. Future work may optimize the
'content' check using the same checks as whether a bootstrap compiler is needed
to be built.

The CCACHE_CPP2 pessimization is currently default in our devel/ccache
port due to Clang requiring it. Clang's -Wparentheses-equality,
-Wtautological-compare, and -Wself-assign warnings do not mix well with
compiling already-pre-processed code that may have expanded macros that
trigger the warnings. GCC has so far not had this issue so it is allowed to
disable the CCACHE_CPP2 default in our port.

Sharing a cache between multiple checkouts, or systems, is explained in
the ccache manual. Sharing a cache over NFS would likely not be worth
it, but syncing cache directories between systems may be useful for an
organization. There is also a memcached backend available [5]. Due to using
an object directory outside of the source directory though you will need to
ensure that both are in the same prefix and all users use the same layout. A
possible working layout is as follows:
Source: /some/prefix/src1
Source: /some/prefix/src2
Source: /some/prefix/src3
Objdir: /some/prefix/obj
Environment: CCACHE_BASEDIR='${SRCTOP:H}' MAKEOBJDIRPREFIX='${SRCTOP:H}/obj'
This will use src*/../obj as the MAKEOBJDIRPREFIX and tells ccache to replace
all absolute paths to be relative. Using something like this is required due
to -I and -o flags containing both SRC and OBJDIR absolute paths that ccache
adds into its hash for the object without CCACHE_BASEDIR.

distcc can be hooked into by setting CCACHE_PREFIX=/usr/local/bin/distcc.
I have not personally tested this and assume it will not mix well with
using the bootstrap compiler.

The cache from buildworld can be reused in a subdir by first running
'make buildenv' (from r290424).

Note that the cache is currently different depending on whether -j is
used or not due to ccache enabling -fdiagnostics-color automatically if
stderr is a TTY, which bmake only does if not using -j.

The system I used for testing was:
WITNESS
Build options: -j20 WITH_LLDB=yes WITH_DEBUG_FILES=yes WITH_CCACHE_BUILD=yes
DISK: ZFS 3-way mirror with very slow disks using SSD l2arc/log.
The arc was fully populated with src tree files and ccache objects.
RAM: 76GiB
CPU: Intel(R) Xeon(R) CPU L5520 @2.27GHz
2 package(s) x 4 core(s) x 2 SMT threads = hw.ncpu=16

The WITH_FAST_DEPEND feature was used for comparison here as well to show
the dramatic time savings with a full cache.

buildworld:
x buildworld-before
+ buildworld-ccache-empty
* buildworld-ccache-full
% buildworld-ccache-full-fastdep
# buildworld-fastdep
+-------------------------------------------------------------------------------+
|% * # +|
|% * # +|
|% * # xxx +|
| |A |
| A|
| A |
|A |
| A |
+-------------------------------------------------------------------------------+
N Min Max Median Avg Stddev
x 3 3744.13 3794.31 3752.25 3763.5633 26.935139
+ 3 4519 4525.04 4520.73 4521.59 3.1104823
Difference at 95.0% confidence
758.027 +/- 43.4565
20.1412% +/- 1.15466%
(Student's t, pooled s = 19.1726)
* 3 1823.08 1827.2 1825.62 1825.3 2.0785572
Difference at 95.0% confidence
-1938.26 +/- 43.298
-51.5007% +/- 1.15045%
(Student's t, pooled s = 19.1026)
% 3 1266.96 1279.37 1270.47 1272.2667 6.3971113
Difference at 95.0% confidence
-2491.3 +/- 44.3704
-66.1952% +/- 1.17895%
(Student's t, pooled s = 19.5758)
# 3 3153.34 3155.16 3154.2 3154.2333 0.91045776
Difference at 95.0% confidence
-609.33 +/- 43.1943
-16.1902% +/- 1.1477%
(Student's t, pooled s = 19.0569)

buildkernel:
x buildkernel-before
+ buildkernel-ccache-empty
* buildkernel-ccache-empty-fastdep
% buildkernel-ccache-full
# buildkernel-ccache-full-fastdep
@ buildkernel-fastdep
+-------------------------------------------------------------------------------+
|# @ % * |
|# @ % * x + |
|# @ % * xx ++|
| MA |
| MA|
| A |
| A |
|A |
| A |
+-------------------------------------------------------------------------------+
N Min Max Median Avg Stddev
x 3 571.57 573.94 571.79 572.43333 1.3094401
+ 3 727.97 731.91 728.06 729.31333 2.2492295
Difference at 95.0% confidence
156.88 +/- 4.17129
27.4058% +/- 0.728695%
(Student's t, pooled s = 1.84034)
* 3 527.1 528.29 528.08 527.82333 0.63516402
Difference at 95.0% confidence
-44.61 +/- 2.33254
-7.79305% +/- 0.407478%
(Student's t, pooled s = 1.02909)
% 3 400.4 401.05 400.62 400.69 0.3306055
Difference at 95.0% confidence
-171.743 +/- 2.16453
-30.0023% +/- 0.378128%
(Student's t, pooled s = 0.954969)
# 3 201.94 203.34 202.28 202.52 0.73020545
Difference at 95.0% confidence
-369.913 +/- 2.40293
-64.6212% +/- 0.419774%
(Student's t, pooled s = 1.06015)
@ 3 369.12 370.57 369.3 369.66333 0.79033748
Difference at 95.0% confidence
-202.77 +/- 2.45131
-35.4225% +/- 0.428227%
(Student's t, pooled s = 1.0815)

[1] https://ccache.samba.org/performance.html
[2] http://www.mail-archive.com/ccache@lists.samba.org/msg00576.html
[3] https://reviews.freebsd.org/D3484
[5] https://github.com/jrosdahl/ccache/pull/30

PR: 182944 [4]
MFC after: 3 weeks
Sponsored by: EMC / Isilon Storage Division
Relnotes: yes


# 289460 17-Oct-2015 bdrewery

Rework the 'make -n -n' feature such that '-n' recurses and '-N' does not.

Bmake has a documented feature of '-N' to skip executing commands which is
specifically intended for debugging top-level builds and not recursing into
sub-directories. This matches the older 'make -n' behavior we added which made
'-n -n' the recursing target and '-n' a non-recursing target.

Removing the '-n -n' feature allows the build to work as documented in
the bmake manpage with '-n' and '-N'. The older '-n -n' feature was also
not documented anywhere that I could see.

Note that the ${_+_} var is still needed as currently bmake incorrectly
executes '+' commands when '-N' is specified.

The '-n' and '-n -n' features were broken for several reasons prior to this.
r251748 made '_+_' never expand with '-n -n' which resulted in many
sub-directories not being visited until fixed 2 years later in r288391, and
many targets were given .MAKE over the past few years which resulted in
non-sub-make commands, such as rm and ln and mtree, to be executed.

This should also allow removing some indirection hacks in bsd.subdir.mk and
other cases of .USE that have a .MAKE by using '+'.

Sponsored by: EMC / Isilon Storage Division
Discussed on: arch@ (mostly silence)


# 289432 16-Oct-2015 bdrewery

Tweak the guard more to suggest 'all' if SUBDIR_OVERRIDE is specified. In that
case 'all' does make sense.

MFC after: 2 weeks
X-MFC-With: r289411
Sponsored by: EMC / Isilon Storage Division


# 289411 16-Oct-2015 bdrewery

Tweak the default target to not suggest 'all' since it really doesn't do
anything useful for most users.

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


# 289361 15-Oct-2015 bdrewery

Consider top-level targets to be .PHONY as bmake won't build them
otherwise if a file with the same name is found in the directory.

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


# 289089 09-Oct-2015 bapt

Add installconfig as a top level target


# 288391 29-Sep-2015 bdrewery

Fix the .MAKE added in r251750 to properly support the historical -n -n.

The condition used matches the condition in sys.mk for setting _+_ to blank
or +.

With this -n will continue to not descend into Makefile.inc1, while -n -n will
and cause Makefile.inc1's target to run with -n.

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


# 287903 17-Sep-2015 bdrewery

Rework r287900 to keep arm64/aarch64 stable in the TARGETS list.

This is relevant for makeman using the 'make targets' output in src.conf(5).

This makes a _UNIVERSE_TARGETS that removes arm64 if the build
requirements are not met.


# 287900 17-Sep-2015 bdrewery

Get arm64/aarch64 into 'make targets' output to fix makeman.


# 285080 03-Jul-2015 sjg

Fix generation of src.conf.5

Since makeman turns all options on, we need to guard somethings from
make(showconfig)


# 284699 22-Jun-2015 sjg

targets now needs .PHONY


# 284471 16-Jun-2015 andrew

Move the universe done dependency on the worlds completing out of the
loop, we only need to add it once.

Obtained from: ABT Systems Ltd


# 284469 16-Jun-2015 andrew

Remove unneeded dependencies, these are now handled through the _done
target.

Obtained from: ABT Systems Ltd


# 284457 16-Jun-2015 andrew

Add a new target universe_${target}_done to print the completion message.
Without this we could print this message in the wrong place when building
with MAKE_JUST_WORLDS is set.

Obtained from: ABT Systems Ltd


# 284456 16-Jun-2015 andrew

Add a universe_${target}_worlds target to simplify the logic to find when
to start building kernels.

Obtained from: ABT Systems Ltd


# 284454 16-Jun-2015 imp

A more compatible fix to MK_META_MODE not being defined. Also, encase
bmake specific constructs not needed for make bootstrap so fmake
doesn't see them. This works with fmake just well enough for us to
build bmake to build the rest of the tree without fatal errors. Tested
only with fmake package.


# 284453 16-Jun-2015 andrew

Add a comment to the end of the world and kernel cases in the universe
target to help follow the make magic.

Obtained from: ABT Systems Ltd


# 284394 14-Jun-2015 rodrigc

If MK_META_MODE is unset, assume a value of no.

This is needed to build HEAD on FreeBSD 10.1,
which has bmake, but does not have
/usr/share/mk/src.opts.mk

Reviewed by: sjg
Reported by: jenkins


# 284345 13-Jun-2015 sjg

Add META_MODE support.

Off by default, build behaves normally.
WITH_META_MODE we get auto objdir creation, the ability to
start build from anywhere in the tree.

Still need to add real targets under targets/ to build packages.

Differential Revision: D2796
Reviewed by: brooks imp


# 282156 28-Apr-2015 emaste

Don't add arm64 to universe builds if the user provided a TARGETS list

Differential Revision: https://reviews.freebsd.org/D2375
Reported by: andrew
Reviewed by: andrew, imp
Sponsored by: The FreeBSD Foundation


# 282108 27-Apr-2015 ngie

Fix a typo (linnker -> linker)


# 281629 16-Apr-2015 emaste

Add arm64 to universe if binutils is available.

arm64 relies on an external binutils port or package right now, because
the in-tree linker from binutils 2.17.50 does not support arm64. Add
arm64 to universe if the linker is available. If not output a message
that arm64 is skipped.

buildworld and buildkernel use the external binutils automatically, so
it's sufficient to run 'pkg install aarch64-binutils' to build
FreeBSD/arm64.

Differential Revision: https://reviews.freebsd.org/D2302
Reviewed by: andrew, imp
Sponsored by: The FreeBSD Foundation


# 280326 21-Mar-2015 imp

Make TARGET_ARCH=powerpc64 work without TARGET=powerpc.


# 280259 19-Mar-2015 andrew

Start to import support for the AArch64 architecture from ARM. This change
only adds support for kernel-toolchain, however it is expected further
changes to add kernel and userland support will be committed as they are
reviewed.

As our copy of binutils is too old the devel/aarch64-binutils port needs
to be installed to pull in a linker.

To build either TARGET needs to be set to arm64, or TARGET_ARCH set to
aarch64. The latter is set so uname -p will return aarch64 as existing
third party software expects this.

Differential Revision: https://reviews.freebsd.org/D2005
Relnotes: Yes
Sponsored by: The FreeBSD Foundation


# 271168 05-Sep-2014 kevlo

Revert r271159, Mis-patched the tree.

Pointed out by: kib


# 271159 05-Sep-2014 kevlo

The USB LED driver for the Dream Cheeky WebMail Notifier.

Reviewed by: hselasky


# 270155 18-Aug-2014 imp

Create the native-xtools target. This target creates only the cross
building toolchain for the host computer. This toolchain produces
TARGET_ARCH and assumes the rest of the system contains libraries for
the target. It is intended to be used in a "qemu-user jail" where all
the binaries would otherwise be the target architecture's to build
ports. However, emulation of the compilers is too slow, so we build
native binaries for that. Rather than use the xdev produced binaries,
with all their weird links and paths, these binaries use the native
paths. They will not work unless installed into the qemu-user jail.

Differential Revision: https://phabric.freebsd.org/D518
Reviewed by: sbruno@


# 269048 24-Jul-2014 imp

Add compat shims for XDEV and XDEV_ARCH so we don't break all the
users of them. Also, add a note to updating. We'll keep these shims at
least until the 12 branch.


# 268598 13-Jul-2014 jmmv

Explicitly disable the build of tests when building bmake.

During "make buildworld", building bmake is (one of) the very first steps
and we should not be building any of its tests. Conceptually, this is the
right thing to do 1) for build simplicity reasons and 2) because there is
no need to build any tests this early on.

In practice, this fixes tinderbox builds of CURRENT from 9.x when MK_TESTS
is enabled. This is because bsd.test.mk needs some modern bmake features
not present in 9.x (:tW) and tinderbox is forcing the build to use the
CURRENT share/mk files from the very beginning (see r266617). By skipping
the build of the tests when still using the host make, we omit the problem.
Arguably, what tinderbox is doing is wrong and needs to be addressed, but
that is a separate issue.


# 268503 10-Jul-2014 imp

Separate out the links creation from the other targets. This was
supposed to have been done for the original commit, but somebody
forgot.

Pointy-hat-to: imp@


# 268191 02-Jul-2014 marcel

Remove ia64 from the list of known architectures and add an entry to
UPDATING. This is the first step towards the removal of ia64 from
head. A buildworld for ia64 will now yield:

% make buildworld
make[1]: "/usr/src/Makefile.inc1" line 151: Unknown target ia64:ia64.

While here, trim the ia64-specific additions from ObsoleteFiles.inc

Discussed at: BSDcan


# 265840 10-May-2014 imp

grep -L returns non-zero status if none of the files had the pattern
in them. This is often the case, so just ignore the return
code. Actual errors that are found will also be detected downstream in
the rare cases where the return code is 2 instead of 1.


# 265837 10-May-2014 imp

We haven't done anything with _UPGRADING in ~forever (was present, but
not needed, in FreeBSD 6.x, and has been absent in newer versions).
This was needed to upgrade from 3.x -> 4.x, once upon a time.


# 265827 10-May-2014 imp

Remove a few more vestiges of allowing WITHOUT_BMAKE to imply you want
to buid with fmake.


# 265453 06-May-2014 imp

No need to install man pages for bootstrapping new make. Some
environments (that I can't reproduce locally, but that others have
reported) seem to get tripped up by this man page install. There's
really no need to do it, so turn off the man pages using the most
portable method. We can't just directly set MK_MAN=no here because
we're bootstrapping in the host environment and such a setting was
forbidden until very recently. NO_MAN= can produce a warning, but for
now the warning is benign.


# 265423 06-May-2014 imp

Remove support for WITHOUT_BMAKE. bmake is now the only make that can
build world, so it is the only make we build or install. fmake is
still in the tree, but disconnected, and upgrades from older systems
that still have bmake has not been removed, but its state has not been
tested (it should work given how minimal the work to upgrade to bmake
is).


# 265155 30-Apr-2014 imp

Omit from the universe build all config files tagged with
#NO_UNIVERSE. Many of these config files are important examples, but
add little to no regresive value to the intended purpose of
UNIVERSE. We now build over 120 kernels during universe. There's
really little to no value to this over building say 60 or even 30 of
them (either is still a way too big number). This is especially true
for kernels that are nothing more than including a common base and
adding a static DTB file. Start by pruning 1/3 of the arm kernels that
add little regresion value.


# 265097 29-Apr-2014 brooks

Merge from CheriBSD:

commit 1d1b908107255ffdff4d17f015d8f057d73cc6cb
Author: Brooks Davis <brooks@one-eyed-alien.net>
Date: Fri Mar 28 16:24:45 2014 +0000

Add a long needed seatbelt.

Exit with an error when make is called without a target at the top level
rather than poluting the source tree and causing use confusion in future
builds.

commit a9d9aa341b2f4308a227ab460ba85f1f287ad028
Author: Brooks Davis <brooks@one-eyed-alien.net>
Date: Tue Apr 29 16:06:12 2014 +0000

Simplify seatbelt added in 1d1b908 based in feedback.

Discussed with: imp@FreeBSD.org

Reviewed by: imp
Sponsored by: DARPA, AFRL


# 264742 21-Apr-2014 jmmv

Prevent building tests when bootstrapping make.

Should fix the breakage reported by tinderbox when WITHOUT_BMAKE is set,
which was probably introduced in r263346..


# 264460 14-Apr-2014 brueffer

Document the xdev* targets.

PR: 188519
Submitted by: Idwer Vollering <vidwer at gmail.com>
Reviewed by: bapt
MFC after: 1 week


# 264397 13-Apr-2014 imp

We no longer support upgrading from FreeBSD 4, so we don't need the
NOMAN and NOSHARED defines here. They have been obsolete for almost a
decade anyway.


# 263996 01-Apr-2014 imp

Remove support for legacy mips*eb names. Remove tests for
TARGET_BIG_ENDIAN.


# 263660 23-Mar-2014 andrew

Add a new ARM TARGET_ARCH, armv6hf. This is considered experimental.

This targets the existing ARMv6 and ARMv7 SoCs that contain a VFP unit.
This is an optional coprocessors may not be present in all devices, however
it appears to be in all current SoCs we support.

armv6hf targets the VFP variant of the ARM EABI and our copy of gcc is too
old to support this. Because of this there are a number of WITH/WITHOUT
options that are unsupported and must be left as the default value. The
options and their required value are:
* WITH_ARM_EABI
* WITHOUT_GCC
* WITHOUT_GNUCXX

In addition, without an external toolchain, the following need to be left
as their default:
* WITH_CLANG
* WITH_CLANG_IS_CC

As there is a different method of passing float and double values to
functions the ABI is incompatible with existing armv6 binaries. To use
this a full rebuild of world is required. Because no floating point values
are passed into the kernel an armv6 kernel with VFP enabled will work with
an armv6hf userland and vice versa.


# 255784 22-Sep-2013 andrew

Remove the armv6eb architecture as it is unused, and almost certainly
broken. None of our kernels can boot armv6eb. The little-endian kernels do
not have the required code to be able to switch endian when running a
big-endian executable.

Approved by: re (gjb)


# 255713 19-Sep-2013 emaste

Further refinement to bmake bootstrapping

Include PROGNAME and DESTDIR in ${MMAKE} so that it doesn't need to be
passed to each make invocation.

Suggested by: hrs
Reviewed by: hrs
Approved by: re (gjb)


# 255484 12-Sep-2013 emaste

Fix make bootstrapping with WITH_DEBUG_FILES=

A HEAD buildworld on 9.x first bootstraps bmake, but this failed when
building with standalone debug. Pass in the PROGNAME override to the
'make all' stage as well as 'make install' so that the .debug file is
created with the correct name.

Reviewed by: sjg
Sponsored by: The FreeBSD Foundation
Approved by: re (rodrigc)


# 255286 06-Sep-2013 sjg

During universe/tinderbox export MAKE_JOB_ERROR_TOKEN=no
This avoids aborting everything when one kernel fails.

Reviewed by: obrien


# 254437 17-Aug-2013 sjg

Don't let user specified DESTDIR, break building our chosen make.


# 254417 16-Aug-2013 sjg

When we need to build using the in-tree make,
switch at the earliest opportunity.
In the case of fmake vs bmake, this helps ensure correct load handling.

Reviewed by: obrien


# 253616 24-Jul-2013 sjg

Fix bug in universe where if upgrade_checks wants a new make,
it gets built 16 times in parallel in the same location.
While we are at it, until we finish getting rid of fmake,
be explicit about the make we want to use, thus avoid the problem
of the temp make being the wrong version.

Reviewed by: obrien


# 253003 07-Jul-2013 alfred

Correct typo specifying jflags.


# 253002 07-Jul-2013 alfred

Document tip on how to build all kernels quickly.


# 251750 14-Jun-2013 sjg

Flag recursive make targets with .MAKE
so that job token pipe is passed to them.
To avoid surprising anyone, only add .MAKE to ${TGTS} when -n
has not been specified (at least for Makefile).

Reviewed by: obrien


# 251352 03-Jun-2013 sjg

bmake does not like universe_${target}_prologue in the .ORDER
when there is an explicit dependency for it anyway.
Remove it so both bmake and fmake do the same thing.

Reviewed by: OBrien


# 251107 29-May-2013 crees

Make the instruction order for buildworld agree with UPDATING and the
Handbook.

Reviewed by: imp, bdrewery, netchild
Approved by: gjb (mentor)


# 250719 16-May-2013 sjg

Reverse the sense of the test wrt bmake, and guard against
MK_BMAKE not being defined.


# 249395 12-Apr-2013 sjg

If doing buildworld -DWITH_BMAKE make sure bmake does the build.


# 249316 09-Apr-2013 dim

Ensure make -j N universe works correctly, by checking for an up-to-date
make before starting the universe targets themselves. Otherwise, all of
the targets would attempt to build make simultaneously, overwriting each
other's copies of the make object files and executable. This could lead
to strange errors, for example when partially-written make executables
are invoked.

Also amend r216620, to make the rest of universe wait properly until the
upgrade_checks target is finished, by adding universe_${target}_prologue
to the .ORDER target. Otherwise, make will be too smart for its own
good, and start building the universe targets simultaneously with the
prologues anyway.

MFC after: 1 week


# 248937 31-Mar-2013 andrew

When building universe ensure the required worlds are finished before
starting the kernels. Before this the kernels would be built as part of the
last architecture universe target. There can cause problems when this world
finishes before the other worlds as the host compiler may be picked up
rather than the target compiler.

The solution is to add a target to build the universe kernels that depends
on all the world targets finishing. As we may not be building a world only
depend on it when MAKE_JUST_KERNELS is undefined.


# 242522 03-Nov-2012 marcel

Add the buildLINT convenience target, handy for build automation.
The automation can set TARGET_ARCH and TARGET and then make various
top-level targets, including buildLINT and buildkernel (with
KERNCONF=LINT). Previously there was no way to generate the LINT
kernel configuration without having to do something exceptionally
painful.


# 241298 06-Oct-2012 marcel

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>


# 240403 12-Sep-2012 obrien

Not all Pmake derivatives silently handle empty shell output, so ensure there
is something for make(1) to consume. Bmake gives output such as:
"warning: Couldn't read shell's output for "/bin/sh -c true"
Note we parted from traditional Pmake behavior in r18864 / r18255.


# 239272 15-Aug-2012 gonzo

Merging of projects/armv6, part 3

r238211:
Support TARGET_ARCH=armv6 and TARGET_ARCH=armv6eb

This adds a new TARGET_ARCH for building on ARM
processors that support the ARMv6K multiprocessor
extensions. In particular, these processors have
better support for TLS and mutex operations.

This mostly touches a lot of Makefiles to extend
existing patterns for inferring CPUARCH from ARCH.
It also configures:
* GCC to default to arm1176jz-s
* GCC to predefine __FreeBSD_ARCH_armv6__
* gas to default to ARM_ARCH_V6K
* uname -p to return 'armv6'
* make so that MACHINE_ARCH defaults to 'armv6'
It also changes a number of headers to use
the compiler __ARM_ARCH_XXX__ macros to configure
processor-specific support routines.

Submitted by: Tim Kientzle <kientzle@freebsd.org>


# 238051 03-Jul-2012 obrien

Add "hier" as an alternate spelling of "hierarchy" to match hier(9).


# 233644 29-Mar-2012 jmallett

Assume a big-endian default on MIPS and drop the "eb" suffix from MACHINE_ARCH.
This makes our naming scheme more closely match other systems and the
expectations of much third-party software. MIPS builds which are little-endian
should require and exhibit no changes. Big-endian TARGET_ARCHes must be
changed:
From: To:
mipseb mips
mipsn32eb mipsn32
mips64eb mips64

An entry has been added to UPDATING and some foot-shooting protection (complete
with warnings which should become errors in the near future) to the top-level
base system Makefile.


# 232907 13-Mar-2012 jmallett

Add a kernel-toolchains target like the toolchains target, but building only
the parts of the toolchain necessary to build kernels.


# 231821 16-Feb-2012 pluknet

delete-old does not have delete-old-libs dependency.
Reflect this in the comment.

PR: conf/163993
Submitted by: Eugen Konkov <kes-kes at yandex ru>
MFC after: 3 days


# 227771 20-Nov-2011 gjb

Replace 'chflags' with 'file flags' in a comment, since 'chflags'
is a command, not a flag itself.

While here, wrap a line for readability.

Submitted by: arundel
MFC after: 3 days
X-MFC-With: 227769, 227770


# 227770 20-Nov-2011 gjb

Fix the note in r227769 to be less specific to the immutable flag.

Submitted by: arundel
MFC after: 3 days
X-MFC-With: r227769


# 227769 20-Nov-2011 gjb

Add a note to src/Makefile that explains that 'rm' runs twice because the
second invocation only needs to operate on files with the immutable flag
set.

Submitted by: arundel (via private email) (original version)
Discussed on: -toolchain@
MFC after: 3 days


# 223148 16-Jun-2011 ru

It's a bit odd, but "make update" in src/ can also update the ports/,
doc/, and now www/ trees, but only using the "cvsup" transport.

When "make update" is run using a tree's makefile, it can also use
"cvs" (except for www/) and "svn" (only src/).

Clean up documentation and code regarding "make update":

- Increase oddness by adding support for WWWSUPFILE and NO_WWWUPDATE to
Makefile.inc1 (analogous to PORTSSUPFILE/NO_PORTSUPDATE and
DOCSUPFILE/NO_DOCUPDATE; WWWSUPFILE already supported by www/Makefile).

- Document all trees that support CVS_UPDATE.

- Document all trees that support SUP_UPDATE.

- Document SVN_UPDATE.

- Document NO_WWWUPDATE.

- make.conf(5) mistakenly said that *SUPFILE* had defaults.

- Add an example entry for WWWSUPFILE.


# 221869 14-May-2011 attilio

Disconnect sun4v architecture from the three.

Some files keep the SUN4V tags as a code reference, for the future,
if any rewamped sun4v support wants to be added again.

Reviewed by: marius
Tested by: sbruno
Approved by: re


# 221216 29-Apr-2011 jhb

Add the mipsn32eb TARGET_ARCH to the list of mips targets for the
XLRN32 kernel config.

Reviewed by: imp, jmallet


# 220556 12-Apr-2011 bz

If building (custom) FreeBSD images people tend to patch param.h. In case
this happens just before the build is started (within the same second)
CHECK_TIME actually triggers thinking param.h is in the future (see f_Xtime,
c_Xtime logi in find(1) sources for the details in !F_EXACTTIME case).
Using the -mtime -0s (seconds, rather than no unit) avoids this 1s race.

Submitted by: ed (2009-05-03)
Reviewed by: cperciva (2009-05-03), emaste
Tested by: bz (for almost two years)
MFC after: 4 days


# 220512 10-Apr-2011 dougb

Update recommendation for mergemaster. The -a and -i options are exclusive.

PR: docs/156271
Submitted by: Fedor Dikarev <fedor.dikarev@gmail.com>


# 219177 02-Mar-2011 nwhitehorn

Improve the distributeworld target in Makefile.inc1 and update the release
infrastructure to use it. make distributeworld can now be used without
preparing its environment first and installs games into its distribution
using the regular make distribute logic instead of post-processing with
a script.

Also add two new targets, packageworld and packagekernel, that tar up the
results of distributeworld and distributekernel (also new), respectively.


# 219137 01-Mar-2011 jhb

Fully honor KERNSRCDIR for 'make universe' if it is set.

MFC after: 1 week


# 218524 10-Feb-2011 jhb

- Add a new UNIVERSE_TARGET variable for 'make universe'. If it is set,
then that target is invoked for each architecture rather than the
default action of building world and kernels for each architecture.
- Add a 'make toolchains' wrapper which uses UNIVERSE_TARGET to build
toolchains for all architectures.
- Document JFLAG, MAKE_JUST_KERNELS, and MAKE_JUST_WORLDS variables for
'make universe'.

Reviewed by: bz
MFC after: 1 week


# 218206 03-Feb-2011 imp

Setting TARGET and TARGET_ARCH needs to be done in _MAKE, not in the
TGTS rule as _MAKE is used elsewhere. This should fix make world.


# 218130 31-Jan-2011 imp

Move the architecture guessing from Makefile.inc1 to Makefile. We
need to do this because variables specified on the command line
override those specified in the Makefile. This is why we also moved
from TARGET to _TARGET in Makefile, and then set TARGET on the command
line when we fork a submake with Makefile.inc1.

This makes mips/mips work again, even without the workaround committed to
lib/libc/Makefile.


# 217815 25-Jan-2011 bz

Back out r217734. [1]

Properly document what `make targets` is supposed to list to avoid
further confusion given the place the target sits. Should have happened
with r217125.

Requested by: imp [1]
Reviewed by: rwatson


# 217754 23-Jan-2011 bz

For `make tinderbox` there is no need to print the extra commands.

MFC after: 5 days


# 217735 22-Jan-2011 bz

Make `make tinderbox` work with MAKEOBJDIRPREFIX set (or in possibly other
combinations) by forcing FAILFILE into .CURDIR as we do for all other
universe output files. [1] Similarly make FAILFILE start with "_." as well.

Reviewed by: silence-on-src [1]
MFC after: 6 days


# 217734 22-Jan-2011 bz

In `make targets` print the make variable TARGETS as we expect it rather
than the grammatically better sounding variant without the 'S'. This
allows copy and paste and is less confusing.


# 217733 22-Jan-2011 bz

Properly document what the top-level `make tinderbox` does.

Reviewed by: jmallett
MFC After: 3 days
X-MFC: build.7 only


# 217297 12-Jan-2011 imp

Provide up-to-date estimates that are pessimal today...


# 217294 11-Jan-2011 imp

Proving once again, I can't typo: fix a type.


# 217273 11-Jan-2011 imp

Minor improvements in the wording of a comment. Document tinderbox target.


# 217125 07-Jan-2011 imp

make targets

This produces a list of currently supported targets. Here "supported"
means "built in make universe" on the theory that those targets are
more supported than any that might work in 'make buildworld TARGET=x
TARGET_ARCH=y' since the latter are less tested.

Suggested by: rwatson


# 217123 07-Jan-2011 imp

Retire TARGET_ABI.

Implement MACHINE_ARCH=mips64e[lb] to build N64 images. This replaces
MACHINE_ARCH=mipse[lb] TARGET_ABI=n64.

MACHINE_ARCH=mipsn32e[lb] has been added, but currently requires
WITHOUT_CDDL due to atomic issues in libzfs. I've not investigated
this much, but implemented this to preserve as much of the TARGET_ABI
functionality that I could. Since its presence doesn't affect the
working cases, I've kept it in for now.

Added mips64e[lb] to make universe, so more kernels build.

And I think this (finally) closes the curtain on the tbemd tree.


# 216934 03-Jan-2011 imp

When TARGET_ARCH_${kernel} gets set, it is using the host's config,
not the one we build as part of make world. This means that make
universe will fail if building on a too-old current or any stable
system prior to a few days ago in weird ways (parse errors from
shell). This copes with these old systems in two ways:

(1) Works around the WARNING: issue by filtering all warnings that
sneak onto stdout.

(2) if TARGET_ARCH_${kernel} winds up being empty, then we error out
immediately with a semi-useful error message. This usually comes from
config not groking -m.

Ideally, we'd use a buildworld's config here, but that's tricky, so
I'll leave that detail to others to fix (it has to be done post make
world for the arch rather than at the top level makefile). This
should make 'make universe' usable from recent 8-stable systems
(recent == last few months or so) for building -current. They have
-m, but spewed warnings out stdout. Older systems will now at least
get a firm error early rather than a confusing error late.


# 216685 24-Dec-2010 imp

Redirect stderr from config to /dev/null. config -m is printing lots
of annoying warnings when dealing with arm. The arm config files need
to be fixed, but this restricts the output to a more useful place.


# 216520 18-Dec-2010 nwhitehorn

Reconnect arm to the universe build, and connect big-endian MIPS and ARM
and powerpc64 to universe for the first time. In general, provide
(slightly hacky) knowledge of multi-architecture TARGETs to universe as
well as the ability to distinguish the correct toolchain for a given
kernel using config -m.


# 216487 16-Dec-2010 jhb

Pass JFLAG as JFLAG from tinderbox to universe. This gives the same
semantics for JFLAG with tinderbox as for universe. Previously doing
'make JFLAG=-j4 tinderbox' was equivalent to 'make -j4 universe'
(i.e. 4 worlds in parallel) rather than 'make JFLAG=-j4 universe'
(i.e. worlds in sequence, each built with -j4).

MFC after: 1 month


# 215271 13-Nov-2010 imp

Add mips back to universe


# 215082 10-Nov-2010 imp

Complete the integration of tbemd branch into head.

TARGET_BIG_ENDIAN is now completely dead, except where it was
originally supposed to be used (internally in the toolchain building).

TARGET_ARCH has changed in three cases:
(1) Little endian mips has changed to mipsel.
(2) Big endian mips has changed to mipseb.
(3) Big endian arm has changed to armeb.

Some additional changes are needed to make 'make universe' work on arm
and mips after this change, so those are commented out for now.

UPDATING information will be forthcoming. Any remaining rough edges
will be hammered out in -current.


# 209128 13-Jun-2010 raj

Connect FDT infrastructure to the build system.

Reviewed by: imp
Sponsored by: The FreeBSD Foundation


# 205290 18-Mar-2010 dougb

For those of us mere mortals who do not aspire to the lofty heights
of kernel hackery, add MAKE_JUST_WORLDS so that we can take part in
the 'make universe' goodnes without using unecessary time and resources.


# 204661 03-Mar-2010 imp

Give make kernel-toolchain a one-liner here. Although documented in
build(7), many people look here for a quick reminder...


# 202629 19-Jan-2010 ed

Back out the change to Makefile made in r202628.

It was just a local modification to build the i386 and amd64 more
quickly.


# 202628 19-Jan-2010 ed

Recommit r193732:

Remove __gnu89_inline.

Now that we use C99 almost everywhere, just use C99-style in the pmap
code. Since the pmap code is the only consumer of __gnu89_inline, remove
it from cdefs.h as well. Because the flag was only introduced 17 months
ago, I don't expect any problems.

Reviewed by: alc

It was backed out, because it prevented us from building kernels using a
7.x compiler. Now that most people use 8.x, there is nothing that holds
us back. Even if people run 7.x, they should be able to build a kernel
if they run `make kernel-toolchain' or `make buildworld' first.


# 202095 11-Jan-2010 bz

Rather than using an extra variable, only call uname if really needed and
then directly assign the result.

Submitted by: jmallett
MFC after: 24 days
X-MFC with: r201815


# 201960 09-Jan-2010 bz

Use uname -m [1] and rename BUILD_ARCH to XMACHINE[2].

Submitted by: nyan[1], imp[2]
MFC after: 27 days
X-MFC with: r201815


# 201815 08-Jan-2010 bz

To avoid hardcoding further kernel configuration names for
make universe, split the logic into two parts:
- 1st to build worlds and generate kernel configs like LINT.
- 2nd to build kernels for a given TARGET architecture correctly
finding all newly generated configs, not knowing anything about
LINT anymore. (*)

(*) If you know better/cleaner/... ways to do this, let me know.

Discussed on/with: arch, jhb, rwatson
MFC after: 1 month


# 190628 01-Apr-2009 bz

Add a new world named 'mips' to our universe.

Discussed with: imp


# 189760 13-Mar-2009 imp

Implement the xdev target. When you define XDEV=arch XDEV_ARCH=arch,
you can build the cross development tools and install them as
$XDEV-freebsd-xxx for each tool. This allows one to use autoconf to
find the tools for cross building scenarios.


# 186519 27-Dec-2008 bz

Permit digits at the beginning and end of kernel config file names for
`make universe'. This catches a few more arm and, once enabled, mips
configs and permits having local configs named like NOINET6.

Reviewed by: phk
MFC after: 4 weeks


# 185499 01-Dec-2008 alfred

Provide a 'tinderbox' target that compiles enough of FreeBSD that
a developer can rest reasonably assured that the tinderbox will not
be broken. This target leverages most of 'universe' but will exit
non-zero and output a summary at the end.

"make tinderbox"


# 185250 24-Nov-2008 des

Change the universe target to warn the user for every world or kernel that
fails. The error message includes a reference to the relevant log file.

Approved by: phk
MFC after: 1 week


# 179845 17-Jun-2008 bz

Back out rev. 1.352 (SVN rev 179842) as phk pointed out that
SRCCONF was omitted here to be able to build non standard trees
with universe as well.


# 179842 17-Jun-2008 bz

For make universe, in addition to make.conf, also ignore a
src.conf with possibe non-default options.

Reviewed by: ru
MFC after: 10 days


# 179309 25-May-2008 jb

Backout the change to remove sun4v.

Note that sun4v is currently broken on T2000 hardware so it's pretty
much a lame duck at this point.


# 179299 25-May-2008 jb

Remove sun4v from the list of arches in 'make universe'. There has been
no active development on it for over a year now and it isn't
reliable under a simple buildworld. Developers can't be expected to
test code targeted for it.


# 179232 23-May-2008 jb

Add a knob to allow just the kernels to be built during a 'make universe'.
This is useful when wanting to retry a broken build using NOCLEAN and the
buildworlds are known to have completed.


# 178653 29-Apr-2008 rwatson

Mention -U and -ai arguments to mergemaster in a comment for the
general mergemaster line.

MFC after: 3 days
Suggested by: Ben Laurie


# 177794 31-Mar-2008 pav

Double up the necessary size of /usr/obj to 800MB

PR: misc/99735
Reported by: Philip M. Gollucci <pgollucci@p6m7g8.com>,
Maxim Konovalov <maxim@macomnet.ru>


# 177609 25-Mar-2008 ru

Add code that should catch the most common case when date/time is
set incorrectly.


# 175833 30-Jan-2008 jhb

Add a note pointing to build(7) for more info.

MFC after: 1 week
Reviewed by: ru


# 174564 13-Dec-2007 imp

We don't need to invent BSDMAKE. ${MAKE} is sufficient.

Submitted by: jmallet@


# 174539 11-Dec-2007 imp

Don't assume that make(1) is a bsd-like make program. It might not be. This
only matters in the early stages of bootstrapping, of course, but gnu make can't
handle bsd make Makefiles at all if they use any of the 'dot' directives, which
src/Makefile has in abudnance.


# 172744 18-Oct-2007 delphij

Do not bail out for cleanworld target just because
chflags is failed.


# 169597 16-May-2007 des

Expose all of {check,delete}-old{,-dirs,-files,-libs}.

MFC after: 3 weeks


# 168280 02-Apr-2007 marcel

Introduce a variable TARGETS that can be set on the make command line
and that controls which platforms are being built as part of a "make
universe". By default TARGETS is set to the 8 platforms currently
being built. This variable is useful for running or re-running a
"make universe" with only a selected set of platforms. This makes the
universe target slightly more useful in cases the universe is limited
to a developer's scope or objectives. For example, when a universe
failed for a particular platform and fixes need to be tested for that
particular platform then a developer can restart the universe for
only that platform, even if the initial universe is still building
other platforms.


# 164709 28-Nov-2006 ru

Add arm to universe.


# 164470 21-Nov-2006 jb

Remove the NO_CTF option. It would have been required to support
DTrace.


# 163862 01-Nov-2006 jb

When building an upgraded make, don't worry about processing it for
use with DTrace because the normal buildworld will do that when the
tools are built.


# 163447 16-Oct-2006 jb

Add sun4v to the 'universe'.


# 162147 08-Sep-2006 ru

In "make universe", utilize simplified cross-build synopsis,
"make TARGET=<machine> build*", now that it actually works.

Prompted by: imp


# 159862 22-Jun-2006 imp

Per weak consensus on this topic, remove suggestion to set
HISTORICAL_MAKE_WORLD from the text that's output. This was committed
against the previous consensus. Leave the documentation in this file
as a compromose. The HISTORICAL_MAKE_WORLD knob is intentionally
obfuscated and we only trust people smart enough to read the Makefile
to use it. All others have no business using it due to its danger,
unless DESTDIR is set.

Dissentors: grog, obrien, trhodes


# 159831 21-Jun-2006 obrien

Note a short-cut in the build procedure.


# 159363 07-Jun-2006 trhodes

Simply running ``make world'' will bomb unless you dig up the
undocumented HISTORICAL_MAKE_WORLD variable and set it. Note it
here so the blow up will not really be a surprise to people who
read.

Link the buildingworld chapter of our handbook in the README
while I'm here.


# 159349 06-Jun-2006 imp

Create a new target 'buildenvvars'. This target reports the build
environment for cross building (the same one you'd get interactively
in make buildenv). This cannot be a simple

make -f Makefile.inc1 -V WMAKEENV

because in PATH is not set correctly unless one takes a trip through
the Makefile/Makefile.inc1 indirection, the logic of which is too
large to reproduce outside of Makefiles.


# 158962 26-May-2006 netchild

Connect the kernel subsystem API documentation generation framework to
the build infrastructure: "make doxygen"

Changes to the man pages will be made when some defaults are revisited.

Requested by: gnn


# 158453 11-May-2006 jhb

Disconnect Alpha from 'make universe'.


# 156840 18-Mar-2006 ru

Add the new "showconfig" target that displays build configuration.

Suggested by: phk


# 156740 15-Mar-2006 ru

Make ${SUBDIR_TARGETS} work at the uppermost level as well.


# 156145 01-Mar-2006 yar

Do not discard the current value of __MAKE_CONF when testing
whether MAKEOBJDIRPREFIX is set at a wrong place.

Reviewed by: ru
MFC after: 3 days


# 152880 28-Nov-2005 ru

Fix a bug in previous revision: skip LINT if it exists, not NOTES
(the source for LINT), as I initially intended.


# 152879 28-Nov-2005 ru

universe: don't attempt to compile DEFAULTS and don't compile LINT twice.


# 148330 23-Jul-2005 netchild

Add delete-old and delete-old-libs targets:
- removes obsolete files/dirs or libraries.
- works in interactive (default) and batch mode
- respects DISTDIR
- documented in UPDATING and build(7)

The head of the file ObsoleteFiles.inc contains instructions how to add
obsolete files/dirs/libs to the list. Obviously one should add obsolete
files to this list, when he removes a file/dir/lib from the basesystem.

Additionally add check-old target:
- allows re@ to check if a file on the obsolete list resurfaces

Design goals:
- allows full control by the user (default interactive mode)
- possibility of scripted removal of obsolete files (batch mode)
- opt-in removal of files (explicit list of files)
- seperate removal of libs (2 delete targets)

Important design decissions:
- structured list of files to remove instead of a plain text file:
* allows to remove additional files if a NO_foo knob is specified
without the need to change the targets (no NO_foo knob is respected
yet)
- not using mtree like NetBSD does:
* mtree doesn't has an interactive mode

Discussed on: arch (long ago), current (this year)
Additional input from: re (hrs)
Approved by: mentor (joerg)


# 148154 19-Jul-2005 ru

- Embed the "buildkernels" target into the "universe" target so that
the "make -n universe" output looks more builder (human) friendly.

- Wrap the "universe" target into a ".if make(universe)"; it's only
intended to be called directly so it should be safe to do it.


# 148051 15-Jul-2005 ru

Make the `distrib-dirs' target official and working properly
when cross-building (installing). (This is useful for NFS
installing world/kernel to another architecture machine.)


# 147425 16-Jun-2005 ru

Provide 32-bit runtime support on amd64 as a separate distribution, lib32.

Prodded by: obrien
Nodded by: peter
Approved by: re


# 143032 02-Mar-2005 harti

Repo-copy tools/regression/usr.bin/make to tools/build/make_check
and adjust the path in the Makefile for the upgrade_checks target.
These checks are really feature upgrade checks that should be fast
and just find out whether we need to build a new make before
proceeding with other targets like buildworld. This makes the
place free for a real regression test suite in the old place.


# 142644 27-Feb-2005 ru

Added the convenience "distribution" target which calls the
target of the same name from src/etc/Makefile with a proper
environment, suitable to be used during upgrades and cross-
builds.


# 142585 26-Feb-2005 ru

Added the "buildenv" target, for developers only!

CAVEAT: if you run tcsh(1) from within this target, this will
reset your PATH making this target mostly useless. Careful!

Submitted by: jmg, ru


# 139112 21-Dec-2004 ru

NOSHARED -> NO_SHARED


# 139103 21-Dec-2004 ru

Start the dreaded NOFOO -> NO_FOO conversion.

OK'ed by: core


# 138921 16-Dec-2004 ru

Previous revision didn't fix all cases. For example,
testing for variables that are always defined (e.g.,
"make -V CC") would still print a false warning. Fix
this by only passing a submake the MAKEOBJDIRPREFIX=*
argument if it was present. As a result, we loose
the check for -DMAKEOBJDIRPREFIX, or an esoteric
"MAKEOBJDIRPREFIX = foo" (with embedded spaces), but
these are unorthodox enough to not care about them.

The make(1) bug mentioned in the previous revision
was just fixed in make/main.c,v 1.109.


# 138768 13-Dec-2004 marcel

Unbreak the MAKEOBJDIRPREFIX variable check by avoiding bugs in make(1).
When make flags are passed to make in the environment, the string is
chopped up in an (argc,argv) vector. This happens in brk_string() and
the chopped up string is stored in static buffer. When this includes
something like "-V BINMAKE", then a pointer into the static buffer is
put on the variables list for evaluation later. However, brk_string()
is used for more than just chopping up the MAKEFLAGS env. variable, so
it's very likely that the static buffer is clobbered. In fact, this is
exactly what happens.
The result is that _MAKEOBJDIRPREFIX gets assigned whatever garbage
the child make happens to emit, causing the test to fail. Like this:

pluto2% cd /usr/src
pluto2% make -V BINMAKE
"/q/6.x/src/Makefile", line 94: MAKEOBJDIRPREFIX can only be set in environment, not as a global (in /etc/make.conf) or command-line variable.
pluto2% make -dv -V BINMAKE | & grep _MAKEOBJDIRPREFIX
Global:_MAKEOBJDIRPREFIX = }

The fix is to not use MAKEFLAGS for this, but simple pass the flags
as arguments. Ideally make(1) should be fixed but that's beyond the
scope of my attention span.

This fixes release.


# 138515 07-Dec-2004 harti

Fix builds with a read-only directory and a make upgrade. This is done
by forcing the creation of an object directory for the make regression
tests. Let make handle the tracking of the dependency and installation
of test_shell script.

Submitted by: ru


# 137288 06-Nov-2004 peter

Convert tools/lib32/build.sh into world connectable hooks. This still
rates pretty high on the "hack!" scale, but it works for me. Adding
-DWANT_LIB32 to the world build command line, or 'WANT_LIB32=yes' to
/etc/make.conf will include the 32 bit libraries with the build.

I have not made this default behavior. Cross compiling this stuff is an
adventure I have not investigated.

This is still a WIP. We needed this at work so that we could install from
a readonly obj tree - lib32/build.sh wasn't up to that.


# 136671 18-Oct-2004 ru

Fixed MAKEOBJDIRPREFIX variable type check in case the env(1)
binary is not in PATH, as is the case with installworld, etc.


# 133945 18-Aug-2004 ru

My take at improving the universe: allow the worlds to be
built in parallel. Examples:

make universe
Build worlds sequentially, each world sequentially.

make universe JFLAG=-j4
Build worlds sequentially, each world in parallel.

make -j4 universe
make -j4 universe JFLAG=-j2
Build four worlds in parallel, each world will be
built in parallel too. World parallelization is
set to four in the first synopsis, and to two in
the second.

make -j4 universe JFLAG=-B
Build worlds in parallel, each world sequentially.

("world" == buildworld followed by buildkernels.)

Prayers: obrien, phk


# 133942 18-Aug-2004 ru

Moved the MAKEOBJDIRPREFIX check from Makefile.inc1 to Makefile,
to suppress warnings with installworld and distributeworld when
env(1) cannot be found in the PATH.


# 133376 09-Aug-2004 harti

Make make recurse into sub-directories and sub-makes when given
two -n flags. If only one -n flag is given the old behaviour
is retained (POLA). In order to make this working for installworld
change the IMAKEENV in this case so that the tools are found
(we have no temporary installation environment in this case).

Submitted by: ru (IMAKEENV part)


# 132588 23-Jul-2004 kensmith

The doc team reworked the section of the handbook describing how to
rebuild things, further discouraging 'make world'. The title of
that section is now changed...


# 132358 18-Jul-2004 markm

Rename a preposterously long name with one that might look a bit
more professional. While here, write a few lines of explanatory
text to explain what its for.

Discussed with: rwatson
With hat: core


# 132324 18-Jul-2004 obrien

Add an "out" to the now required BS of defining DESTDIR.


# 132312 17-Jul-2004 marcel

Properly terminate a quoted string in the previous commit. Oddly
enough this only seems to cause problems with -jX so went unnoticed
until now.


# 132234 16-Jul-2004 marcel

As per discussions on current@, protect unsuspecting users from
trying to upgrade their system with make world instead of following
the preferred and suggested sequence of commands. The fact remains
that make world does not upgrade the kernel.
Allow make world when DESTDIR has been specified, including when
DESTDIR specifies the root file system. Otherwise, print a useful
warning and fail.

Reviewed, tested and scrutinized by: gad@


# 131876 09-Jul-2004 phk

Add a JFLAG which can be used to speed up universe:
make universe JFLAG=-j12


# 128189 13-Apr-2004 des

Add a kernel-toolchain target which only builds the bits required to build
a kernel. This is essentially the same as the toolchain target, except
that it does not build headers and libraries.

Submitted by: ru


# 127360 24-Mar-2004 ru

Added the `toolchain' top-level target, which builds enough of
buildworld, up to and including libraries, except for actually
building the world.

Requested by: many


# 126485 02-Mar-2004 ru

Protect shell expansions.


# 126403 29-Feb-2004 johan

Add amd64 to universe.

Approved by: peter


# 126031 20-Feb-2004 gad

Change the 'realclean' target name to be 'cleanworld', to match other
targets like buildworld, installworld.

Suggested by: obrien


# 126024 19-Feb-2004 gad

Improvements on the 'make realclean' target. Some are style improvements,
but the biggest issue is that there are situatons when
${.OBJDIR} == ${.SRCDIR}, and in those situations the previous version
would happily remove all your /usr/src while it was cleaning out the objects.
Not that *you* would be happy about it... Thanks to bde for immediately
noticing this serious possibility.

More improvements will be made to this target, but I wanted to commit this
safer version right now, before anyone lost their /usr/src due to it.

Reviewed by: bde
MFC after: 10 days


# 125885 16-Feb-2004 gad

Add a 'realclean' target, which simply and quickly removes everything
that was built in previous 'make buildworld' and 'make buildkernel'. The
target knows enough to run a 'chflags -R 0' and a second 'rm' if the first
'rm' ran into any errors while removing files.

Suggested by: email with Richard Coleman Re: upcoming 64b-time_t changes.
Reviewed by: imp, marcel, and others on -hackers
MFC after: 1 week


# 123311 09-Dec-2003 peter

Put on some factor 30+ bikeshed repellent and export the internal
Makefile.inc1 underscore targets with a big warning that they are
intentionally undocumented, subject to change without notice and
might poison your dog etc. If you don't know what they are, then they
are not meant for you to use.

I've added these by hand to so many many trees that I've lost count. I
find them rather useful.


# 122204 07-Nov-2003 kris

Don't allow the 'make' target (which rebuilds make for bootstrapping)
to become confused by a file called 'make' in /usr/src

Submitted by: ru


# 120760 04-Oct-2003 ru

Retired the "most" and "installmost" targets -- they just
do not have a chance to work nowadays as we have a lot of
internal libraries in lib/.

Discussed with: marcel, wollman


# 119579 30-Aug-2003 ru

Cosmetics: folded BITGTS into TGTS.


# 119519 28-Aug-2003 marcel

Limit testing for an up-to-date version of make(1) to the world and
buildworld targets by default, but allow it to be done for all user
targets by introducing a boolean option, named ALWAYS_CHECK_MAKE.

This change is by no means perfect and I don't even want to claim
this to be a solution. It does however address the fact that not
everybody likes to see make(1) rebuilt simply because the regression
test failed for some reason or other, including pilot error. It
therefore serves the purpose of keeping the crowd happy until we
have something better or simply reached a compromise.

The reasons for changing the default behaviour are:
o It avoids a negative, possibly non-intuitive option,
o It's according to POLA and fond of feet,
o Only buildworld is documented to do its best to be
successful at reasonably cost.

Reviewed by: gad, imp, obrien, peter


# 118531 06-Aug-2003 ru

- Don't print "elf" before printing "make world" (aout support has been
removed).

- Avoid using printf(1) where a simple shell's built-in echo is enough.


# 117806 20-Jul-2003 ru

The `mk' target is long dead.


# 117793 19-Jul-2003 ru

Use an up-to-date make binary in the upgrade_checks target if
one is already available. This avoids sometimes unnecessary
step of attempting to rebuild the make binary again which may
fail at all if, for example, one has removed his /usr/include
before doing an installworld (to keep /usr/include tidied up).

Pointed out by: kris, marcel


# 117234 04-Jul-2003 ru

Don't hardcore PATH into BINMAKE; the latter should only be
comprised of the path to a make(1) binary (possibly the one
built by the "make" target in this Makefile), and a path to
a fresh share/mk. The idea is to allow "make release" pick
up the right "make" binary, if one exists.

This fixes release.5 I broke with the last commit here; the
second PATH here was overriding the right one from WMAKEENV
while rebuilding the "build-tools" for crunched binaries.


# 117229 04-Jul-2003 ru

Fixed style bugs related to parentheses in Makefile.inc1.

Submitted by: bde

Fixed nearby bug: propagate the root Makefile's idea of
the appropriate "make" binary down to release/Makefile.


# 116696 22-Jun-2003 ru

Do the upgrade checks quietly.


# 116679 22-Jun-2003 simokawa

Allow installkernel.debug and reinstallkernel.debug.


# 113000 03-Apr-2003 imp

Kill upgrade target docs. It too is stale.

Submitted by: ru


# 112999 03-Apr-2003 imp

Kill aout to elf upgrade path. From an old comment in the makefile:

# If -DWANT_AOUT is specified, a `make world' with OBJFORMAT=elf will
# update the legacy support for aout. This includes all libraries, ld.so
# and boot objects. This part of build should be regarded as
# deprecated and you should _not_ expect to be able to do this past the
# release of 4.0. You have exactly one major release to move entirely
# to elf.

Now that we're past 5.0, these aren't needed at all anymore and it is
well past its freshness date.


# 111617 27-Feb-2003 ru

Don't make buildworld and buildkernel in parallel.
And this is probably what you expect when you say
"make -jX buildworld buildkernel".


# 111133 19-Feb-2003 ru

Don't spam sys/${MACHINE}/conf/ with _.${MACHINE}.makeLINT.

Submitted by: johan


# 111131 19-Feb-2003 ru

Fixed universe.

Folded pc98 into the common case.
Retired ${JFLAG} (``make -jX universe'' should work).


# 111089 18-Feb-2003 phk

Fix make universe's kernel builds on pc98: We need to pass both ARCH
and TARGET_ARCH.


# 110035 29-Jan-2003 ru

Part 3/3 of unbreaking cross releases:

When we call "distributeworld" as part of "make release", we set
MACHINE and MACHINE_ARCH to point to TARGET and TARGET_ARCH; this
confused src/Makefile's idea of what ${MAKEPATH}, and consequently
${MAKE}, is (well, it still confuses ${MAKEPATH}, but see below).

To overcome this problem, we now take the following approach:

- We preserve the make(1)'s idea of its argv[0], ${MAKE}.
- We check to see if ${MAKE} passes the regression tests.
- If it does, we use it. Otherwise, we build and use an
up-to-date make(1).

This fix is still not quite right, in a situation where a single
/usr/obj is shared between different architecture machines, but
it is less critical and I hope to fix that soon.


# 108451 30-Dec-2002 schweikh

Minor typo fixes and whitespace cleanups.


# 107884 14-Dec-2002 imp

Build kernels for pc98 just like the other platforms. Also, remove
one space to make the dates line up for easy mental math.

# Too bad only i386 and pc98 are the only parts of the universe
# currently buildable on my box :-(


# 107556 03-Dec-2002 bmah

Minor, cosmetic change to buildworld output to make it reflect
rev. 1.270 more accurately.

Reviewed by: ru
Approved by: re (jhb)


# 107516 02-Dec-2002 ru

If /usr/bin/make fails to pass the regression tests, it might not
be suitable for building. The old action here was to upgrade the
make in /usr/bin. This is both bogus and does not work under non
root. So, rather than overwriting the existing /usr/bin/make, we
now install it into a safe location, and use it from there.

Reviewed by: imp, marcel
Approved by: re (rwatson)


# 107374 28-Nov-2002 ru

Moved make(1) regression tests from src/Makefile to where they
belong (src/tools/regression/usr.bin/make), and use the latter
to test if make(1) is adequate for building the world.

Approved by: re


# 104370 02-Oct-2002 phk

PC98 is not a true architecture, but a subarchitecture of i386, so we need
to use a slightly differnt command to PC98::buildworld.


# 104277 01-Oct-2002 phk

Add pc98 to universe target.
Remember about /usr/obj and look for conf/NOTES in the right place.


# 103985 26-Sep-2002 phk

Add "make universe" target which:

for each arch i386 sparc64 alpha ia64
make buildworld TARGET_ARCH=$arch
if NOTES found
make LINT
foreach kern ${arch}/conf/[A-Z0-9]*
make buildkernel TARGET_ARCH=$arch KERNCONF=$kern

Errors from the individual steps are ignored and the stdout+stderr
are saved in distinct files in root of the source tree with names
like: _.${arch}.${target}

On my dual 1.6G Athlon it takes roughly four hours to run this target.


# 103436 17-Sep-2002 peter

Initiate deorbit burn for the i386-only a.out related support. Moves are
under way to move the remnants of the a.out toolchain to ports. As the
comment in src/Makefile said, this stuff is deprecated and one should not
expect this to remain beyond 4.0-REL. It has already lasted WAY beyond
that.

Notable exceptions:
gcc - I have not touched the a.out generation stuff there.
ldd/ldconfig - still have some code to interface with a.out rtld.
old as/ld/etc - I have not removed these yet, pending their move to ports.
some includes - necessary for ldd/ldconfig for now.

Tested on: i386 (extensively), alpha


# 102692 31-Aug-2002 peter

Deal with bootstrapping from an old -current (almost exactly a year old)
which fails the make tests (doesn't understand ${notdef:U}) and therefore
fails on __FBSDID in usr.bin/make/*. -DBOOTSTRAPPING is no help here since
this is before we are using the new share/mk/* files, and it would conflict
with the builtin -DBOOTSTRAPPING support later.. so use a different flag.


# 100402 20-Jul-2002 ru

Indentation.


# 100401 20-Jul-2002 ru

Upgrade make(1) if not passing the ``.if defined(notdef) && ${notdef:U}''
test (revealed by bsd.lib.mk,v 1.134).


# 98775 24-Jun-2002 dillon

correct syntax in last commit


# 98723 24-Jun-2002 dillon

Document TARGET_ARCH


# 97769 03-Jun-2002 ru

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).


# 97536 30-May-2002 obrien

Line up the make world completed output.


# 97252 24-May-2002 ru

Forgot to commit this for the `includes' -> `buildincludes',
`incsinstall' -> `installincludes' changes.


# 96462 12-May-2002 ru

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".


# 96205 08-May-2002 jwd

Bring doc up-to-date with current buildworld/buildkernel practices.

Reviewed by: jhb


# 96164 07-May-2002 ru

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


# 95793 30-Apr-2002 ru

Milestone #2 in cross-arch make releases. They now work!

You need to set TARGET_ARCH and possibly TARGET, the same
way you normally do it for a cross build(7).

Renamed `distribworld' to a more natutal `distributeworld'.

Put pwd_mkdb(8) under ${INSTALLTMP}; for `distributeworld'.


# 95730 29-Apr-2002 ru

Parallel "make release" fixes.


# 95509 26-Apr-2002 ru

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>


# 95306 23-Apr-2002 ru

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.)


# 95146 20-Apr-2002 gshapiro

Despite the fact that it is documented in the handbook, the release notes,
and UPDATING and has been posted to both freebsd-current and
freebsd-stable, users are still not adding the required smmsp user and
group before doing an installworld. Therefore, don't let users do an
installworld unless they have followed directions.

Add a new installcheck Makefile target which installworld runs before
actually starting the installation. This target can be used by other parts
of userland as well. The first addition to the target is to check for the
smmsp user and group if NO_SENDMAIL isn't defined.

Others may add checks to this target as they see fit.

MFC after: 1 week


# 91606 03-Mar-2002 keramida

Makefile.inc0 is no longer used.
Update comments to reflect that.

Approved by: dd, silence in -audit.


# 90395 08-Feb-2002 ru

FreeBSD 4.1 bootstrapping aid (``:C'' make(1) modifier used
by gnu/usr.bin/binutils/as/Makefile.inc0 is not there).

XXX: make(1) should return with a non-zero exit status here.


# 74842 27-Mar-2001 ru

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


# 73504 04-Mar-2001 obrien

End words with a `.'.
Fixed spacing messed up in rev 1.244.


# 73349 02-Mar-2001 ru

setlocale(3) has been fixed to match POSIX standard:
LC_ALL takes precedence over other LC_* envariables.


# 72427 13-Feb-2001 jkh

Cosmetic fix: Document targets at the top in a uniform way.


# 69659 06-Dec-2000 obrien

Add back displaying the `world' start time when displaying the stop time.
However, don't prefix it with '>>>', so those greping for times will
not see it.


# 69496 01-Dec-2000 jkh

Also list kernel target so one can get to it.


# 69491 01-Dec-2000 jkh

Document the "kernel" target.


# 68987 21-Nov-2000 marcel

Fix release, broken by the perl cross-build fixes.

The distribute target is basicly the same as an install. For
perl, this means that miniperl is needed. Since miniperl is
only present in the object directory, we need to make sure
the path is set correctly. To do this, we have make release
use a new distribworld target that sets the path before doing
a make distribute.


# 68428 07-Nov-2000 jkh

While we're still arguing over debugging output, at least be in a
self-consistent state.

Requested by: bde


# 68374 05-Nov-2000 jkh

MFS: eliminate duplicate start line


# 66071 19-Sep-2000 markm

Pass the reinstallkernel target through from Makefile to Makefile.inc1.


# 64049 31-Jul-2000 alex

Mention the buildkernel/installkernel targets in the documentation.


# 57457 24-Feb-2000 markm

We have a new world order in libraries.

Goodbye libdes; Welcome libcrypto.


# 55678 09-Jan-2000 marcel

Add the buildkernel and installkernel targets.
While here fix some minor style bugs (whitespacing) and move the
make target from Makefile.upgrade to this file.
Simplify the make target to make it readable.


# 55026 23-Dec-1999 marcel

Descent into sub-makes with a fixed PATH. The PATH does not contain
/usr/games on purpose. All tools in /usr/games are built as part of
the tool stages to support building world on machines without games.

This fixes any build problems that have been caused by non-standard
paths and also removes the primary objection for not using absolute
paths.


# 54324 08-Dec-1999 marcel

Oops! bypassing Makefile.inc0 without adding a `world' target is not
a good idea. Adding `world' to Makefile is save, because all hairy
bits are in Makefile.inc1 anyway.


# 54311 08-Dec-1999 marcel

Restore the upgrade path from -stable to -current and prepare for
non-root cross-building.

o Makefile.inc0 is not used anymore.
o The legacy aout build has been removed.
o Selectively build tools *before* building includes/libraries.
o Avoid using mtree to populate the obj tree.


# 51361 18-Sep-1999 jb

Remove a comment about setting objformat to elf by default. We've
done that already.

Change the -DWANT_AOUT comment to refer to 4.0 so that it sounds less
silly.


# 50479 28-Aug-1999 peter

$Id$ -> $FreeBSD$


# 49315 31-Jul-1999 hoek

Comment change: "Be warned, this will update your installed system, except
for the configuration files in the /etc directory." .... and the kernel.


# 45108 29-Mar-1999 obrien

Change !defined(NOAOUT) knob to defined(WANT_AOUT).


# 44918 20-Mar-1999 jkh

Note that the upgrade target exists, and what it does.

Requested by: Wayne M Barnes <stabilizer@klentaq1.emergingtech.org>


# 44103 17-Feb-1999 msmith

Use ${MAKE} not 'make -f'

Submitted by: tfreak@fluffybunny.jaded.net


# 43226 26-Jan-1999 jkh

Frob the upgrade target to be a bit more inclusive. This appears to
be a good bit more successful at doing automated upgrades than the
previous aout-to-elf target, anyway. I'll MF3 in a couple of days
depending on how this does.


# 42128 28-Dec-1998 peter

Dip my toes into the fire and zap the leftover lkm hooks.. It seems they
try and recurse if the lkm dir exists for some reason but there isn't any
Makefile there. (eg: stray files prevented cvs update -P from removing the
empty dirs)


# 40495 17-Oct-1998 bde

Restored all lost user targets that are supported by bsd.subdir.mk:
checkdpadd, lint, maninstall, objlink, regress and tags.

Removed bogus user target cleanobj. It is the non-recursive base of
the cleandir target, so it is not useful (or usable) here.


# 39784 29-Sep-1998 jkh

Add back a few useful targets lost in the reshuffle.
Reviewed by: jb


# 39726 28-Sep-1998 jb

The legacy stuff needs gobs more space in the obj tree. 165->260 Mb.


# 39206 15-Sep-1998 jkh

Restore default implict behavior of running the all target we had before.


# 39055 10-Sep-1998 ache

Revive hierarchy again.
Please commit only patches, not whole files!


# 38978 09-Sep-1998 jb

Add the missing rerelease target back.

Reported by: Justin Gibbs.

Add the move-aout-libs upgrade target so that people who have already
gone elf can put their libraries through the mincer. Anyone who hasn't
deleted aout libraries from /usr/lib (but has done a make world putting
the new aout libs in /usr/lib/aout) will be asked for confirmation
to delete them one by one.


# 38916 07-Sep-1998 ache

Revive hierarchy target


# 38821 04-Sep-1998 jb

YAMT (yet another missing target). It's a shame that these have to
be visible to the user. Maybe `make release' should call the backend
directly.


# 38804 04-Sep-1998 jb

Add the distribute target that make release wants.


# 38719 01-Sep-1998 jb

Add the clean cleandepend and cleanobj targets back.


# 38666 31-Aug-1998 jb

E-day build system changes.

- Moved most of the guts of Makefile to Makefile.inc1 to become the
backend for the build system.
- The new Makefile doesn't suffer from problems including the wrong
sys.mk because it doesn't use anything in there or bsd.own.mk. So,
from now on, the proper build command is just `make world' (or
buildworld).
- The intermediate makefiles called Makefile.inc0 and Makefile.upgrade
fiddle with the OBJFORMAT and MAKEOBJDIRPREFIX variables so that
both aout and elf object trees can coexist. Makefile.upgrade contains
the aout->elf transition build.
- A cross build environment is now very close to reality. Specifying
TOOLDIR, setting OBJFORMAT and MAKEOBJDIRPREFIX allow that.

See the comments in Makefile for more info.


# 38425 18-Aug-1998 jb

Build objformat on all architectures.


# 38106 04-Aug-1998 bde

Fully enable the optimization of not building dependencies unless NOCLEAN
is set. It was disabled in the -j case. See rev.1.173.


# 38104 04-Aug-1998 peter

Descend into etc always; src/etc/sendmail/Makefile has make.conf hooks
for building and installing a local sendmail.cf..

I'm a little nervous about the implications of having an obj dir built
under etc (to get to the obj dir for sendmail), but the make rules appear
to DTRT.


# 38042 03-Aug-1998 bde

Fixed building -current under 2.2.6 using `make world'. Moved some
recently added definitions from sys.mk to bsd.own.mk. Include the
src-relative bsd.own.mk in src/Makefile to pick up all new definitions.
Don't check that MACHINE_ARCH is defined in src/Makefile, since it is
(and should have been) guaranteed to be defined.


# 38009 02-Aug-1998 wosch

Malformed conditional if MACHINE_ARCH is not defined. From rev 1.195.


# 37475 07-Jul-1998 bde

Oops, don't build tools for building games, etc. when we're not building
games, etc.

Define _BUILD_TOOLS in sub-makes for building tools. This will be used
to avoid using uninstalled tools in colldef and mklocale.


# 37473 07-Jul-1998 bde

Build internal tools in build-tools so that they have some chance of
working when the target system is not binary compatible. Use various
hacks to work around minor problems in the source and binary tree
layouts:
- caesar and strfile are built normally (the source layout is good),
then installed by copying them to ${WORLDTMP}/usr/bin (they are
installed in ${WORLDTMP}/usr/games, but I don't want to put that
in $PATH).
- colldef and mklocale are built and installed normally. Messy and
incomplete relative path searches for them and caesar and strfile
can now go away.
- internal tools that aren't installed are now built and left lying
around for the `make all' pass to use. If the target system is
not binary compatible, it is critical that these tools don't get
rebuilt. Cleaning of the obj tree before building the internal
tools should ensure this.
- most internal tools are built using internal build-tools targets,
but tn3270 is simpler for a change - it has all the tools in a
separate tree, so they can be built using `make all'.


# 37026 17-Jun-1998 bde

Added yacc to the bootstrap tools. It is needed very early to
build at least compile_et and lex, and although almost any version
of yacc could work, the version in -stable doesn't actually work
with -current makefiles because it doesn't support -o.

Submitted by: Ian Holland <ianh@tortuga.com.au>


# 36939 13-Jun-1998 peter

join(1) is used by lorder, add it to build-tools. (otherwise, things get
ugly when an a.out /usr/bin/join sees the elf LD_LIBRARY_PATH from a
'make world' and it's a.out ld.so tries to load the elf libc.so.)


# 36800 09-Jun-1998 bde

Quick fixes for the mtree bootstrap:
- don't announce `mtree' as `mtools'.
- don't install to ${DESTDIR}/usr/sbin (which often doesn't exist if
DESTDIR is set and may be read-only if DESTDIR is not set).
- install to (${WORLDTMP}/usr/sbin so that the new mtree is actually
in $PATH if DESTDIR is set.
- don't use the host make or the host sys.mk. This is probably
unimportant.
- use a temporary obj dir like the one for `make'. This was mainly
necessary because I forgot to remove the MAKEOBJDIRPREFIX unsetting
which was just a bug for mtree. A non-quick fix would handle mtree
more like a bootstrap tool (the only additional complications are to
create ${BINDIR} and avoid excessive cleaning). Except a non-quick
fix would change much more.


# 36722 07-Jun-1998 sos

Compile mtree before it is used, this is a hack, but make world has
failed since new functionality was introduced in mtree.


# 36687 06-Jun-1998 jkoshy

-DALLLANG is now obsolete in "src/Makefile"; move to "src/release/Makefile".

PR: 6685


# 36683 06-Jun-1998 bde

Don't run the target's ldconfig or build it as a tool. If target == host
(in particular, if DESTDIR is empty or "/"), then the host's ldconfig will
be the target's ldconfig by the time it is run.

Fixed disordering of env.

Don't know too much about libcrypt. Use exactly the same definition of
_libcrypt as lib/Makefile.

Don't build strip twice.


# 36682 06-Jun-1998 bde

Fixed bogotification of the lex bootstrap in rev.1.186 and the previous
commit - don't wander off to bootstrap mtree and include in the middle
of bootstrapping lex, and don't forget what we were doing and build
some lex obj dirs twice.


# 36672 05-Jun-1998 jkh

Add mtree to bootstrap targets now that peter has added a new
keyword to it which will otherwise call the next target to fall over
on transitioning systems.


# 36638 04-Jun-1998 jb

Build aout bootstrap tools only on i386.

`make world' now works on alpha!


# 36622 04-Jun-1998 charnier

Typos.


# 36589 02-Jun-1998 jhay

Don't build perl in build-tools: if NOPERL is defined.


# 36585 02-Jun-1998 peter

Fix brain-fart. "usr.bin/reinstall" should be "sbin/ldconfig".
No comment. *-<:-)

Submitted by: "Pierre Y. Dampure" <pierre.dampure@k2c.co.uk>


# 36573 01-Jun-1998 peter

ldconfig is used at the end of installworld.


# 36470 30-May-1998 jhay

Add a test to see if the secure directory exists, before deciding which
crypt library should be used when building bootstrap-libraries. This
make it work on machines that don't have the secure directory.
Thanks to Paul Allenby <pallenby@mikom.csir.co.za> for bringing it to
my attention.


# 36455 29-May-1998 jkh

Whoops! Committed the wrong version of that file - here's the one which
works.


# 36454 29-May-1998 jkh

Move sh after awk in build tools - sh requires awk to build. Add id
to list of bootstrap tools.
Submitted by: jhay


# 36444 28-May-1998 peter

Only pre-build the "default" libcrypt, since it gets to set the symlinks
for the rest of the build. I'm not certain, but I think this determines
which crypt() goes into /sbin/init. This change shouldn't hurt anyway. :-)

Based on a suggestion by: bde


# 36442 28-May-1998 peter

Urgent fix for bootstrap target. If the old symlinks are pointing to the
real source tree, the bootstrap target would attempt have cpio copy the
files over themselves, unlinking them first. I think this only happened
with make -DNOCLEAN world at the transition between a symlinked
objdir/tmp/usr/include/{sys,net,..} and real files.


# 36429 27-May-1998 peter

Replace the partial symlink tree to src/sys/* in $OBJDIR/tmp/usr/include
with real copies. I'm sick of !@#&!^!@#*& mtree chowning directories in
my src/sys/* tree after it follows the symlinks. I still believe that
mtree is broken for doing this (introduced in mtree.c rev 1.5).


# 36423 27-May-1998 peter

On the other hand, when /usr/bin/as is really a link to objformat, it's not
helpful to stop it running /usr/libexec/aout/as for real while bootstrapping.
Only force a strict path when we really have built all the tools in
$OBJDIR/tmp/usr/libexec/*.


# 36419 27-May-1998 peter

Move objformat after binutils, otherwise we get chicken/egg problems when
building ELF. It may be that binutils and objformat need to both be moved
earlier in the list though, but that can wait till the dust settles.


# 36408 27-May-1998 sos

Compile & use objformat as it was intended to, I have no idea why
that failed for me before :(


# 36397 26-May-1998 sos

ELF preparation step 2:

Move a.out libraries to /usr/lib/aout to make space for ELF libs.
Make rtld usr /usr/lib/aout as default library path.
Make ldconfig reject /usr/lib as an a.out library path.
Fix various Makefiles for LIBDIR!=/usr/lib breakage.

This will after a make world & reboot give a system that no
longer uses /usr/lib/*, infact one could remove all the old
libraries there, they are not used anymore.

We are getting close to an ELF make world, but I'll let this
all settle for a week or two...


# 36374 25-May-1998 sos

ELF preparation step 1:

Move our old a.out utils to /usr/libexec/aout.
Enable binutils and put the utils in /usr/libexec/elf
Enable objformat, a little helper program that calls the right
utils based on /etc/objformat and $OBJFORMAT.

This will enable the ELF generating tools.
Remember that this is only step one, the system is still compiled
and run in a.out format ONLY.

Problem left to solve: The BSD manpages wins over the GNU equivalents
as the are installed last. We need to distinguish between the manpages
somehow...


# 36142 18-May-1998 jb

Make perl a build tool since it is required during a make depend.
This should fix the problem people have been having with perl/usub.


# 36111 16-May-1998 jb

Now that FreeBSD/Alpha can be installed on a disk and run on its own,
a bootstrap build under NetBSD is an option.

This makefile will require further changes to ignore aout tools.


# 36074 15-May-1998 bde

Don't use `&&' in any shell commands here. Using it to give conditional
execution is usually unnecessary in BSD Makefiles because BSD make
invokes shells with -e. Using it to give conditional execution is
often wrong in BSD makefiles because BSD make joins shell commands
when invoked in certain ways (in particular, as `make -jN'). Example
makefile:
---
clean:
cd /
false && true
rm -rf * # a dangerous command
---
This should terminate after the `false && true' command fails, but
it doesn't when the commands are joined (`false && true' is a non-
simple command, so -e doesn't cause termination). The b-maked version:
---
clean:
cd /
false; true
rm -rf * # a dangerous command
---
terminates after the `false' command fails (`false' is a simple
command, so -e causes termination). However, for versions of
make like gnu make that don't invoke shells with -e, this change
completely breaks the makefile.

This is one of the fixes for the bug suite that caused `make world'
to sometimes put raw cpp output in .depend files. Building of cc
sometimes failed, but the failure did not terminate the build
immediately, and various wrong versions of the cc components were
used until one was wrong enough to cause a fatal error.


# 35913 10-May-1998 bde

Removed share/info from build-tools. It should never have been there,
and became redundant when it was put in SUBDIR, and became bogus when
WORLDTMP was introduced, and became broken when INFODIR was introduced.

PR: 6138


# 35851 08-May-1998 jb

Fix the problem people are having building -current on a -stable system.
The headers that are installed in WORLDTMP are part of the interface
that includes libraries like libc, so they must be installed together.
This means that lib-tools and build-tools should be merged. The FreeBSD
build only works in hosted form where it is assumed that the installed
version contains adequate tools to build the latest release.


# 35621 02-May-1998 bde

Added patch to build-tools (now needed to make gdb, sigh).

Pointed out by: andreas


# 35479 27-Apr-1998 bde

Don't build dependencies unless NOCLEAN is set. This speeds up
`make world' by about 14% here (down to 4490 seconds real on a
K6/233). Temporarily skip this optimization when building with
-j, since there are still many broken makefiles.

Fixed NOCLEANDIR option. Cleaning of `.depend' was broken.

Put -nostdinc in CFLAGS, not in CC, and don't override the default
CC. This fixes enforcing use of ${WORLDTMP}/usr/include.

Don't install library man pages in ${WORLDTMP}.


# 35462 26-Apr-1998 jkh

Use more reasonable defaults for SUP variables (and print them
correctly) now that sup is long since dead and buried.


# 35452 25-Apr-1998 andreas

make includes has to execute "make beforeinstall" in src/lib/libcalendar
as well, otherwise "make depend" during "make buildworld" fails in
usr.bin/ncal


# 35427 24-Apr-1998 bde

Don't build shared libraries twice for `make world'. This reduces
`make world' times by about 10%. Use a new `bootstrap-libraries'
target to build just enough (static) libraries to bootstrap the
tools, and delay building of shared libraries until all the tools
have been built.

Fixed `/usr/bin/make world'. The version of `make' that we buildis
nand use is named "make", not ${MAKE}.


# 35294 19-Apr-1998 dt

Cosmetic: put '@' in front of a very long command.


# 34895 26-Mar-1998 markm

Make the decision to compile kerberosIV a bit more secure by looking
for the appropriate directory.


# 34688 19-Mar-1998 bde

Build the initial `make' in the temporary build tree so that its forced
cleaning doesn't affect the normal copy. Save a little time by not doing
unnecessary clean, depend nd cleandepend steps.

Reviewed by: mckay@freebsd.org

Added xargs to build-tools. It may be used for kdump and truss.


# 34623 16-Mar-1998 bde

Restored an (apparently unnecessary) -B for installing lib-tools.
The install target is -j-unsafe in general, so we use -B for
installing everything in `make world'.


# 34592 15-Mar-1998 bde

Don't force NOPIC for building tools at all for now, so that some
(slightly stale) shared libraries get installed before non-tools
are linked. The 2-stage build of the libraries has never really
worked, since we link to the libraries built in the first stage.


# 34575 14-Mar-1998 bde

Don't force NOPIC or NOSHARED for building tools in the NOCLEAN case,
so that dirtier-than-previously tools aren't left lying around to be
installed.

Filter out NOPIC from ${MK_FLAGS} for `make ${OBJDIR}' for ld (and
some other things), so that the obj dir for ld/rtld always gets
re-made.

Fixed a literal "make".


# 34541 13-Mar-1998 bde

Build all tools shared, and don't build any shared libraries for tools.

Build libraries (for linking the tools to) in a more correct order
(for linking freshly created shared libraries to each other). This
is probably a no-op now that shared libraries for tools aren't
built, but I didn't test any intermediate versions. Security-related
directories that are not built by default may now be misordered
for the shared case.

Don't build libcompat specially. It isn't used for tools, and
shouldn't be used in /usr/src (it is only used for IPXrouted and
crufty games).

Added missing ${.CURDIR} to existence tests for library directories.
Existence tests for top-level directories are still broken.

Test for library directories actually being built, not for directories
above them.


# 34520 12-Mar-1998 bde

compile_et is now used early to build includes for libss, so build it
earlier. This is probably unnecessary.

Added now-necessary -B for installing headers for libss.

Removed now-unnecessary -B for building cleandepend for rpcgen.


# 34509 12-Mar-1998 bde

Fixed missing SHLIBDIR in GCC_EXEC_PREFIX.

Add the path to the source .mk files to the beginning of .MAKEFLAGS
instead of to the end, so that there is more chance of it having
priority. Additions in /etc/make.conf still have priority for
sub-makes if they are also at the beginning, although this is
probably not wanted for building /usr/src.

Use ${MK_FLAGS} for building dependencies for tools. This saves
time building dependencies for tools that won't be created (mainly
profiled libraries) and will be necessary to give correct dependencies
when tools are built static.

Spell the object directory as ${OBJDIR} consistently (even when we know
that ${OBJDIR} == "obj").

Print ${DESTDIR} in messages where appropriate.

Fixed some misformattings.


# 34508 12-Mar-1998 bde

Separated header creation from header installation in libss. Create
the libss headers before installing them in `make world'.


# 33611 19-Feb-1998 jb

Change the bootstrap makefile inclusion to be general based on the
MACHINE. This lets me play with porting to m68k too. 8-) That is a
good test for portability because MACHINE != MACHINE_ARCH and m68k is
big endian.


# 33595 19-Feb-1998 nate

MF22:
- After the install has been done, but before makedb is run, run
'ldconfig -R' to pick up new shlib dependencies.

Suggested by: Amancio and a whole lot of other folks


# 33133 06-Feb-1998 adam

-DNOTOOLS to not rebuild any tools during buildworld


# 32427 11-Jan-1998 jb

Test for ${MACHINE} == "alpha" and include the bootstrap makefile instead
of doing the normal build. When the alpha bootstrap is complete (there
is more work to do!), the alpha will build like the i386 does now.
I changed i386 references to ${MACHINE} now that we're multi-architecture.


# 30277 10-Oct-1997 asami

Do not use -B in initial build of "make". It doesn't exist in 2.1.x.
Instead, list the targets one per command line.

Reviewed by: bde
Submitted by: bde (part)


# 30205 07-Oct-1997 bde

Removed uneeded ${.MAKEFLAGS} again.
Originally committed in: rev.1.141
Spammed by: rev.1.149 (mouldy parallel make diffs)


# 30170 06-Oct-1997 jkh

Having to review all changes to this file _very_ carefully
led me to find 2 more errors which were there before. :)


# 30169 06-Oct-1997 jkh

Hooboy!

Did I ever spam this file good with that last commit. Despite 3
reviewers, we still managed to revoke the eBones fixes, TCL 8.0 support,
libvgl and a host of other new things from this file in the process of
parallelizing the Makefile. DOH! I think we need more pointy hats - this
particular incident is worthy of a small children's birthday party's worth of
pointy hats. ;-)

I certainly intend to take more care with the processing of aged diffs
in the future, even if it does mean reading through 20K's worth of them.
I might also be a bit more anal about asking for more up-to-date changes
before looking at them. ;)


# 30132 05-Oct-1997 fsmp

Removed redundant 'all' arg to " Making Make" target.
Removed "-r RELENG_2_2" from 'update' target.


# 30127 05-Oct-1997 markm

How the heck did this get back??


# 30113 05-Oct-1997 jkh

Changes to support full make parallelism (-j<n>) in the world
target.
Reviewed by: <many different folks>
Submitted by: Nickolay N. Dudorov" <nnd@nnd.itfs.nsk.su>


# 29938 28-Sep-1997 mckay

When bootstrapping lex, the object directory for lex/lib would be deleted
without being recreated. A read-only source compile would then fail shortly
afterwards trying to write .depend into the source tree.


# 29930 28-Sep-1997 markm

Change for KTH KerberosIV.
-DMAKE_EBONES is changed to -DMAKE_KERBEROS4


# 29872 26-Sep-1997 jkh

When making make, do cleandir *before* objdir or we'll end
up with a blown objdir for the depend stage, leaving the
.depend file in ${SRCDIR} instead.


# 29503 16-Sep-1997 bde

Backed out rev.1.136 and rev.1.144. Force SHARED=symlinks in a different
way - for buildworld only.

Rev.1.136 broke the (deprecated) external includes target. Rev.1.144 was
a half-baked backout of rev.1.136. It broke SHARED=symlinks for the
buildworld target and installation of subdirs of src/include for the
includes target.


# 29444 15-Sep-1997 rgrimes

When calling the src/include Makefile use the shorthand ``all beforeinstall''
inplace of ``all installhdrs symlinks'' so those of us who run with
SHARED=copies get the right results.


# 29130 05-Sep-1997 peter

Back out use of -m, since 2.1.x apparently do not have it. (sigh..)


# 28968 31-Aug-1997 peter

Fix the ${BINFORMAT} definition problem during 'make {build}world'. The
wrong switches were being passed to 'make' that caused sys.mk to come from
the /usr/share/mk location but the bsd.*.mk files to come from the
source tree in src/share/mk. This was bound to break sooner or later.

Submitted by: Dmitrij Tejblum <dima@tejblum.dnttm.rssi.ru>


# 28803 26-Aug-1997 peter

Remove unneeded ${.MAKEFLAGS} being explicitly passed on via the command
line..

PR: 4368


# 28728 25-Aug-1997 bde

Use new installhdrs target to install tcl includes.


# 28532 21-Aug-1997 bde

Added directories in the includes target so that it installs
everything that a full install would (modulo bugs in rpcsvc/Makefile).
The missing things weren't used (except for mp.h from libmp), but
there are relatively few of them and it's easier to be complete.


# 28531 21-Aug-1997 bde

Restored rev.1.122, which was clobbered by copying from -stable in
rev.1.134.

Split long lines.


# 28358 18-Aug-1997 peter

Pass command line args to 'buildworld' and 'installworld' etc. Otherwise
'make -DNOCLEAN world' is completely ignored.


# 28357 18-Aug-1997 peter

In the includes target, call the header install target explicitly and then
call the 'symlinks' target to build the /usr/obj/tmp/install/sys tree since
In the includes target, call the header install target explicitly and then
call the 'symlinks' target to build the /usr/obj/tmp/install/sys tree since
we set this up manually earlier, and if we do a 'make all install', we
replace the symlink tree in the obj dirs with new copies of the files
which breaks any chance of -DNOCLEAN working.


# 28329 17-Aug-1997 andreas

fix a make world problem.
updated beforeinstall target.
mp.h from gnu/lib/libgmp.h has to be installed to /usr/include
so that usr.bin/chkey and usr.bin/newkey can be compiled.


# 28104 12-Aug-1997 asami

Merge from -stable; NOTCL hook in beforeinstall.


# 27910 05-Aug-1997 asami

Merge buildworld/installworld patch to Makefile from RELENG_2_2. Patch
a couple *.mk files to enable -current world building on really old
machines (e.g., 2.1.5).

Reviewed by: too many many people to list here, special thanks to bde


# 27790 31-Jul-1997 asami

More whitespace/tab fixes.

Submitted by: bde


# 27788 31-Jul-1997 asami

Consistently use tabs in the leading comments.

Submitted by: bde (yes, I'm serious)


# 26510 08-Jun-1997 jfieber

Remove sgml stuff from the build-tools target. It is no longer used
in a make world.


# 26504 08-Jun-1997 jhay

Add libmp and libz to the includes target. This makes "make includes -DCLOBBER;
make depend; make all" work. I think there should be a better than adding
each library directory here.


# 26152 26-May-1997 peter

make beforeinstall in libalias from the includes target


# 25980 21-May-1997 asami

Fix comment about LOCAL_DIRS. Now it works as advertised. :)


# 25979 21-May-1997 jkh

Remove evil MAKE_LOCAL and MAKE_PORTS hacks and replace them with
a simpler, more general LOCAL_DIRS hack.
Reviewed by: asami


# 25783 13-May-1997 peter

Forgot to commit this.. Do a 'make all' in src/include before trying
to install it. Otherwise osreldate.h breaks.

Pointed out by: Doug Rabson <dfr@nlsystems.com>


# 25647 10-May-1997 bde

Use `mk' files in share/mk (relative to the top level of the source
tree) instead of the system default ones in /usr/share/mk. This
only works for makes run from the top level, and a few not too out
of date system makefiles must be present to start up. Bootstraps
from can still be done from scratch by giving the path to an up to
date share/mk on the command line.

Removed bootstrap `mk' target and use of it. The bootstrap didn't
actually work for the non-null DESTDIR case.


# 25399 03-May-1997 jb

Change default build to include libc_r, but allow disadvantaged souls
to turn off the build.


# 25313 30-Apr-1997 bde

Bootstrap the info `dir' file from here.


# 24754 09-Apr-1997 jdp

Process "lib/csu/i386" at the beginning of the "libraries" target,
instead of in the middle of it. Soon, "c++rt0.o" will be linked
into all shared libraries. An up-to-date version of it must be in
place before any shared libraries are built.

This is one piece of the solution for PR gnu/3035 (gcc -shared).


# 24561 02-Apr-1997 ache

Back out csu fix, because it was just fixed differently


# 24552 02-Apr-1997 ache

For csu/i386 add "all" before "beforeinstall", because "beforeinstall"
wants to install "all" targets which not exist at this stage


# 23053 23-Feb-1997 peter

Revert $FreeBSD$ to $Id$


# 21922 21-Jan-1997 jkh

Add uudecode to lib-tools so that the -p option is available for
the later build in lib/compat/* for those systems upgrading from source.

Pointed-Out-By: John Hay <jhay@zibbi.mikom.csir.co.za>


# 21673 14-Jan-1997 jkh

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.


# 21614 12-Jan-1997 jdp

Add "lib/csu/i386" to the "includes" target, so that <dlfcn.h> is
installed before it is needed.
Noticed by: David Conran <lucifer@maths.uq.oz.au>


# 21586 12-Jan-1997 steve

Remove yacc from the lib-tools target since it is now
back to its original form.

Requested by: jkh


# 21536 11-Jan-1997 jmacd

Add -DNOINFO to MK_FLAGS, that's okay right? The comment says
MK_FLAGS contains -DNOMAN and -DNOPROFILE for speed, so I assume
NOINFO is okay as well.

Add gnu/usr.bin/texinfo to build-tools so everything does the right
thing.


# 21386 07-Jan-1997 jkh

Add yacc to lib-tools target, now that it's been changed.


# 20710 20-Dec-1996 asami

Add comment on -DALLLANG.

Suggested by: max


# 19966 26-Nov-1996 ache

Use LC_TIME=C instead of LC_TIME= (POSIX)


# 19320 01-Nov-1996 adam

use NOSHARE variable to skip 'share' directory, useful for shared installations
or for faster make of executables.


# 19175 25-Oct-1996 bde

Improved comment about `all' target.

Use a for loop instead of massive duplication in the build-tools target.


# 18921 14-Oct-1996 peter

oops, how did this get into the reinstall target? :-]
Must have been a cut/paste foulup... The whole idea of 'make reinstall'
is that it doesn't build anything from the source server mount.


# 18729 06-Oct-1996 jkh

Add awk to build target.
Submitted-By: jhay


# 18714 05-Oct-1996 ache

Use SUP and SUPFLAGS variables to change them to cvsup if needed


# 18674 04-Oct-1996 peter

Add some 'world' hooks for libg++-2.7.2, specifically the new libstdc++
directory. Also, add gnu/usr.bin/as to the lib-tools target since libgcc
generates weak symbols, and libstdc++/libg++ use them. ie: coming from a
2.1.x system will fail without 'as'.


# 18434 21-Sep-1996 ache

Unlocalize `date`


# 18392 19-Sep-1996 peter

Hooks to attempt to get 'make world' working with gcc-2.7.2.1. It's
worked for me, but no guarantees yet.

Basically, move cc earlier to lib-tools target, before libraries are
built. libgcc is built at the same time, so it's special entry is
removed from the libraries target. Also, add bison/gperf immediately
before cc, since they are needed to build cc and are not present on an
earler-than-2.2 system. (libgcc is partly built with the freshly compiled
gcc-2.7.2.1, since it uses __attribute__'s that were not present until now)

This _should_ be enough to get running from older releases, perhaps as far
back as 2.0.5.


# 18362 18-Sep-1996 jkh

Add 3 small lines which add to the utility of the "finished on `date`"
output in the world target.


# 18204 10-Sep-1996 jfieber

Add usr.bin/sgmls to the build-tools target.
This should prevent make world from falling over in share/doc.


# 17962 30-Aug-1996 peter

- cosmetic change to 'make world'
- do an explicit 'make all' in include/rpcsvc in 'make includes' as
a 'make install' is not supposed to build anything.


# 17820 25-Aug-1996 jkh

Revert all the make depend changes.


# 17794 23-Aug-1996 jkh

Get rid of all the explicit calls to make depend.


# 17469 07-Aug-1996 nate

Removed extraneous .endif that was left during OBJDIR cleanup.

Noticed by: phk


# 17467 07-Aug-1996 peter

Move tsort back to lib-tools where it belongs, and add a "specially
for bootstrap" tweak to the lex Makefile to stop it building the library
too early.

This untangles things a bit more, it stops new bootstraps failing because
libl/libfl uses 'ld -O' before ld is updated.


# 17466 07-Aug-1996 peter

Correct spelling of NOOBJDIR (I mistakenly wrote NOOBJ).
Closes PR#1451 (Ph. Charnier <charnier@xp11.frmug.org>) and
PR#1453 (Peter Mutsaers <plm@xs4all.nl>)


# 17406 03-Aug-1996 jkh

The bootstrap target in src/Makefile has the wrong order for lex/tsort
because lex has a library (libln.a) and bsd.lib.mk has been modified to use
'tsort -q'. Tsort has not been build yet...

tsort should be before lex. [Whoops! Thanks! -jkh]

Submitted-By: roberto@keltia.freenix.fr (Ollivier Robert)


# 17401 03-Aug-1996 jkh

Add tsort to bootstrap targets.


# 17308 27-Jul-1996 peter

General tidy-up of Makefile. The objective was to make it clear and
readable, as well as fix up some of the warts along the way. Among the
things fixed is the infamous "cd foo && make depend all install" bogon,
which is particularly important for users of the -DNOCLEAN option.

Also, a few typo and DESTDIR fixes and a -DNOGAMES hack from Gary Jennejohn.


# 17234 21-Jul-1996 jraynard

Fix typo in Makefile.

Reviewed (informally!) by jkh.


# 16866 01-Jul-1996 jkh

Add make to the bootstrap targets (I thought I committed this 3 days ago -
sheesh!).


# 16813 28-Jun-1996 phk

Add beforeinstall decent into libtcl


# 16796 27-Jun-1996 peter

Comment out the:
.if exists(contrib)
SUBDIR+= contrib
.endif
because it now tries to decend into the new contrib dir which doesn't
have a Makefile.


# 16786 26-Jun-1996 nate

Added libftpio to 'includes'.


# 16663 24-Jun-1996 jkh

Bring in my changes for removing the pestilent obj links (unless you
really want them) from /usr/src. This is the final version of the
patches, incorporating the feedback I've received from -current.


# 16591 22-Jun-1996 pst

Ask CVS to run in quiet mode, which makes it easier to see what the
update actually did.


# 16550 20-Jun-1996 jkh

Add pre-world and post-world hooks so that people can do site specific
cleanup or preinitializion of /usr/src before and after the world target
is run.


# 16534 20-Jun-1996 adam

libforms is no more


# 16526 19-Jun-1996 nate

Don't try to do a 'make bootstrap all install' in one commend. Break it
into two make commands so that make will recognize that it doesn't need
to buid scan.c w/lex.


# 16520 19-Jun-1996 nate

Added lex to the bootstrap target.


# 15603 04-May-1996 markm

1) make -DCLOBBER not remove most of /usr/lib
2) make all the 'pre-targets' not install profiled libraries and man pages
to speed up the bootstrap in a 'make world'


# 14787 24-Mar-1996 paul

Re-instate the bootstrap target which can be used to build tools
that can't be built by older OS versions.

Use it to install the lint binaries.


# 14545 11-Mar-1996 jkh

Add a hint that a make world is done so people don't think that the last
command (makewhatis) is running forver. :)


# 14119 17-Feb-1996 peter

do the 'include-tools' as part of the world target (like lib-tools and
build-tools) so that a "make includes" doesn't spam your build tree.


# 14022 11-Feb-1996 markm

Remove reference to old des library.


# 13726 30-Jan-1996 nate

Added 'install' to the inclde-tools target, as it has a new options "-C"
which is used when installing the include files.

Submitted by: John Hay -- John.Hay@csir.co.za


# 13725 30-Jan-1996 nate

Kludge alert!

Add new 'include-tools' target, which the 'includes' target depends on.
Currently, it consists of rpcgen.


# 13138 01-Jan-1996 peter

Add libutil/beforeinstall to the includes target


# 13040 27-Dec-1995 pst

Add rpcgen to build-tools target.


# 12507 28-Nov-1995 nate

Added 'install' to the lib-tools target since it is uses the new '-C' flag
to install libraries to avoid messing up dependencies.


# 12485 26-Nov-1995 jkh

Bring forward libkadm change from 2.1


# 12483 25-Nov-1995 peter

Add -DNOCLEAN option which totally and utterly disables any form of
cleaning during a make. This may give you more rope to hang yourself if
you are caught with some subtle dependency on installed binaries in your
build, but if you are doing daily 'make -DNOCLEAN world' it's not too bad
at all. It could take as little as 30 minutes to do an entire sync-up of
your binaries if everything's up to date, especially if you are using
'INSTALL=install -C' in /etc/make.conf (highly recomended!).

Also, add a "reinstall" target. You can do a 'make DESTDIR=/mnt reinstall'
where /mnt is the nfs root of a machine and you get the install parts of
the make world run on it.

I saw this on -hackers quite some time ago and included it in my Makefile
and have been using it on and off for a while. Alas, I cannot find the
actual message with the author's name...


# 12166 09-Nov-1995 jkh

Add: cd ${.CURDIR}/eBones/lib/libkrb && ${MAKE} beforeinstall
to includes target. Now the world will build on a new 2.1 system again.


# 12106 05-Nov-1995 jfieber

Add sgmlfmt to build-tools target so a make world with current source
on a <= 2.0.5 system does not fall over.


# 11806 26-Oct-1995 phk

Changed "tools" to "build-tools".
Suggested by: Peter Wemm


# 11772 24-Oct-1995 nate

Build all of the libraries: targets libs in the same manner. Append the
optional ${CLEANDIR} and ${OBJDIR} targets to those missng them.

Also, check for the existance of all library targets before building
them to follow convention.


# 11769 24-Oct-1995 phk

Added symorder to tools target.
Suggested by: rgrimes.


# 10838 17-Sep-1995 jkh

Remove extraneous blank in libraries target (from 2.1).


# 10831 16-Sep-1995 gibbs

Update for the new location of eBones.

Submitted by: Paul Traina <pst@freefall.freebsd.org>


# 10760 15-Sep-1995 ache

Enhance sup update to run with 3 supfiles: standard/ports/secure


# 10479 30-Aug-1995 dg

Brought forward the change in 1.57.4.1 - add build of zic(8) to tools rule..


# 9904 04-Aug-1995 asami

We don't have libftp anymore, so why don't we stop trying to do a
make beforeinstall in it. :)


# 8854 29-May-1995 rgrimes

Remove trailing whitespace.


# 8489 13-May-1995 rgrimes

Submitted by: jkh

Build lib/libncurses and lib/libtermcap early in the libraries: target
as other libraries depend on them.


# 8304 06-May-1995 rgrimes

Add usr.sbin/pcvt/keycap to libraries: target.


# 8295 05-May-1995 rgrimes

In target libraries: make and install libcompat before all other
libraries. This fixes the make -DCLOBBER world problem.

Check that gnu exists before attempting to build the libraries in
that branch of the tree.


# 8095 27-Apr-1995 jkh

Add libftp to list of beforeinstall targets in the include rule.
Submitted by: John Hay <jhay@mikom.csir.co.za>


# 7446 28-Mar-1995 sos

Fixed most: target gnu/usr.sbin was install not all


# 7407 27-Mar-1995 rgrimes

We must do include and lib first so that the perl *.ph generation
works correctly as it uses the header files installed by this.


# 7292 23-Mar-1995 rgrimes

Add gnu/usr.bin/ld to lib-tools: since you need this compiled very
early if you are running a back release.


# 7281 23-Mar-1995 rgrimes

Fixed last defined(WANT_MSUN) -> !defined(WANT_CSRG_LIBM) in the src tree.


# 7171 19-Mar-1995 ats

Correct one little typing error from Rod :-).
lib/lib/pcap -> lib/libpcap.


# 7154 19-Mar-1995 rgrimes

Add installation of include files from libpcap.


# 7130 18-Mar-1995 rgrimes

Use new mtree file to rebuild /usr/include.


# 7108 17-Mar-1995 phk

Have include be the first $SUBDIR, this avoid install failure with the
kludgeous install rule in perl/x2p.

Pointed out by: rgrimes


# 7059 14-Mar-1995 roberto

Add gnu/usr.sbin in the installmost and most targets.
Reviewed by: roberto
Submitted by: Remy.Card@blaise.ibp.fr


# 6934 06-Mar-1995 se

Add missing double quote (") in "echo".

Submitted by: wolf@kintaro.cologne.de


# 6927 06-Mar-1995 nate

Since at least one utility depends on it (GNU diff), install the gnu regex
include file (gnuregex.h) in the includes target.


# 6722 26-Feb-1995 phk

use etc:distrib-dirs instead of release:hierarchy. remove SUBDIR reference
to release.


# 6262 09-Feb-1995 jkh

Eliminate a duplicate line.
Submitted by: Heikki Suonsivu <hsu@cs.hut.fi>


# 5866 24-Jan-1995 ache

Add libscsi to includes target


# 5865 24-Jan-1995 ache

Add libforms to includes target


# 5772 21-Jan-1995 wollman

`make world' fixes from Pat Barron, Mark Murray.
Closes PR #156.


# 5749 20-Jan-1995 wollman

Add libcom_err to `includes' target so CLOBBERing the world works again (we
hope).


# 5728 19-Jan-1995 wollman

Added `compile_et' and `mk_cmds' to lib-tools target, as they are needed
to build `libss'. Also delete bogus old /usr/sbin/compile_et at this time
(sorry, it was the only way I could think of to make sure it died).


# 5573 13-Jan-1995 wollman

Delete obsolete references to kerberosIV.


# 5511 11-Jan-1995 jkh

Ack! Mk must go before cleandist in the world rule now. Otherwise
cleandist will fall over at gnu/lib/libreadline/doc when bsd.info.mk
is not found.


# 5366 03-Jan-1995 nate

Added new lib-tools target used in make world which rebuilds and
installs 'ar', 'nm', and 'ranlib' to avoid bootstrapping problems from
the old utils which don't support the long archive names.


# 4942 04-Dec-1994 ache

Add libtermcap to includes target


# 4486 14-Nov-1994 phk

More changes for the "distribute" target.


# 4249 08-Nov-1994 ache

Add gnu/include to includes target


# 4054 01-Nov-1994 pst

Make make world -DCLOBBER work again .. grrr


# 3626 15-Oct-1994 wollman

For those who want a little more control over their build process...

Added two new targets, `most' and `mostinstall', which compile and
install (respectively) just the binaries from just the ``core'' parts
of the system. This makes it easier to do something like the following
(which I do):

# cd /usr/src
# make obj depend
(scrutinize make output)
# make most
# make mostinstall

...which will not confuse things by installing new libraries, /usr/share,
games, gcc (two extra times), and so on. Obviously, if you do this, then
you have to be careful to watch for changes in include files and make macros,
and do the appropriate thing in those cases. (It usually still doesn't
involve building GCC three times or libc six.)


# 3518 11-Oct-1994 ache

Add libdialog to beforeinstall section


# 3429 08-Oct-1994 ache

libmytinfo, libncurses added to 'make beforeinstall' sequence


# 3242 30-Sep-1994 paul

If WANT_MSUN is defined then math.h needs to be installed from the
msun library.


# 3213 29-Sep-1994 pst

make includes needs to do a beforeinstall in libskey


# 3197 29-Sep-1994 csgr

First level of changes for bringing in eBones (kerberos).
- Get rid of inverse logic (NOKERBEROS and NOEBONES) in src/makefile,
and replace with MAKE_KERBEROS and MAKE_EBONES. (Far fewer contortions,
and both default to off.) IF YOU WANT KERBEROS, YOU HAVE TO EXPLICITLY
DEFINE ONE OF THESE.
- Make Makefiles kerberos-aware.


# 3030 23-Sep-1994 rgrimes

Spell hierarchy correctly :-(.


# 3029 23-Sep-1994 rgrimes

Converted to use release/Makefile hieriarchy:.

Disabled SUBDIR+= etc until I get done with the conversion.


# 2883 19-Sep-1994 phk

Need to call on libmd in "includes" target.


# 2834 16-Sep-1994 wollman

Per discussion on the mailing-lists, move LKMs from /sbin to /lkm, and
arrange for that directory to get created by mtree. Also, process secure
directory after all the others, because the programs there may overlay
ones installed from the main part of the tree.


# 2685 12-Sep-1994 rgrimes

Enable call to beforeinstall for libg++ and add one for libreadline.


# 2626 09-Sep-1994 csgr

Changes required for bringing in eBones (kerberosIV - des + des ;-))
- check for directory "eBones"
- add checks for define "NOEBONES"
- get includes and libraries targets set up.


# 2468 03-Sep-1994 paul

Taken update rule out of world target so it doesn't try and sup and
update every time you build world if you've enabled it.

Merged all the gnu library targets into one. libg++ isn't in the
gnu/lib/Makefile anyway so it's still disabled.

Enabled building of lex library -- this was stopping make world working.

Submitted by: Paul Richards


# 2303 26-Aug-1994 paul

Removed an echo about directories not being enabled.

I removed libkern for the libraries target in the last commit too but
forgot to mention it.
Reviewed by:
Submitted by:


# 2302 26-Aug-1994 paul

Added an update target. It does nothing by default but you
can enable things in /etc/make.conf if you wish for those
who might want to use it.

directories has got enabled by this patch too whch I hadn't meant
to do but there's no harm in it since the mtree stuff has been
pulled over now.

Reviewed by:
Submitted by:


# 2279 25-Aug-1994 paul

Added libkern to list of libraries to build.
Deleted mdec target, the bootblocks should get built during
the normal build process now that the sys/Makefile works.

Submitted by: Paul Richards


# 2273 25-Aug-1994 paul

Removed all refernces to *26 directories.
Reviewed by:
Submitted by:


# 2160 20-Aug-1994 csgr

- turn NOCRYPT off
- add NOSECURE and NOKERBEROS
- turn NOKERBEROS on
- add secure directory

(NOCRYPT now has a blanket effect over src/secure and src/kerberosIV,
while NOSECURE and NOKERBEROS control these indiviually.)
Submitted by: Geoff


# 2079 16-Aug-1994 jkh

Whoops, nuke libobjc until we have it too.
Submitted by: jkh


# 2069 14-Aug-1994 jkh

cc -> cc26 for now.
Submitted by: jkh


# 2068 14-Aug-1994 jkh

Kill an errant libg++ entry.
Submitted by: jkh


# 2061 13-Aug-1994 jkh

This is the first attempt to drag the top level Makefile Rod sent me
into 2.0. It will surely need more work.
Submitted by: jkh


# 2007 10-Aug-1994 jkh

Remove kerberosIV until it works or is replace with eBones.. It's
hosing my build worlds..
Submitted by: jkh


# 1914 07-Aug-1994 jkh

Remove `old' directory.
Submitted by: jkh


# 1911 07-Aug-1994 jkh

Whap games too, for now. As people add this stuff back, they can
change the Makefiles, but I'm trying to get as much of the world to
build as possible at the moment.
Submitted by: jkh


# 1909 07-Aug-1994 jkh

Remove contrib, add gnu to reflect current state of the tree so that I can
at least build obj links from the top.
Submitted by:


# 1595 27-May-1994 rgrimes

This commit was generated by cvs2svn to compensate for changes in r1594,
which included commits to RCS files with non-trunk default branches.


# 1594 27-May-1994 rgrimes

BSD 4.4 Lite Top Level Sources