History log of /netbsd-current/Makefile
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# 1.338 08-Sep-2023 riastradh

Makefile: Run `postinstall -d /', not `postinstall -d //'.

This happens when doing `build.sh install=/'. The message is less
confusing and it makes postinstall's job simpler for detecting when
it's installing to / rather than somewhere else.


# 1.337 11-Jun-2023 lukem

more NBUILDJOBS deprecation

The NBUILDJOBS option was deprecated in 2002;
there's no need to keep warning about it,
remove from params / show-params,
and only document as obsolete.


# 1.336 02-Jun-2023 lukem

build.sh: add show-params operation

Add show-params operation to the makefile target, and reword
params operation to describe what it's done since 2012.

(In 2012-11-04 the Makefile's previous params target was renamed
to show-params and a new params target was added to save a 'params'
file, and build.sh wasn't adapted.)


Revision tags: netbsd-10-base
# 1.335 21-Aug-2022 lukem

Deprecate extsrc/, EXTSRCSRCDIR, MKEXTSRC

Remove support for building extsrc/:
1. Makefile: remove do-extsrc target.
2. build.sh: remove options -y and -Y extsrcdir.
3. distrib/sets: remove support for extsrc in various tools
including the options -L ext and -y, and the extsrc sets.
4. doc/BUILDING.mdoc: remove docs for extsrc/, EXTSRCSRCDIR, MKEXTSRC (etc)
5. bsd.own.mk and various Makefiles: remove support for extsrc/,
EXTSRCSRCDIR, MKEXTSRC.

As proposed on tech-kern and tech-userlevel on 2022-01-07
and followed up on 2022-08-21.


# 1.334 19-Mar-2022 rillig

Makefile: fix location of postinstall program for MAKEVERBOSE > 2

If MAKEVERBOSE > 2, each shell command from a make target is echoed.
This resulted in two additional words ending up in the variable
_POSTINSTALL. Noticed by Brad Harder.

Before:
$ make -v _POSTINSTALL MAKEVERBOSE=3
echo .../usr.sbin/postinstall .../usr.sbin/postinstall/postinstall ...

After:
$ make -v _POSTINSTALL MAKEVERBOSE=3
.../usr.sbin/postinstall/postinstall ...


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base
# 1.333 29-Oct-2020 uwe

G/c spurious whitespace.


# 1.332 15-May-2020 christos

automatically remove old debug files for modules.


Revision tags: phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
# 1.331 27-Aug-2019 kamil

Enhance the support of LLVM sanitizers

Define _REENTRANT for MKSANITIZER build. This is needed for at least stdio
code. This caused new build issued with duplicated symbols in few places
and rump kernel code picking different code paths borrowed from libc.
Handle all this in one go.

Add bsd.sanitizer.mk to share common code used by programs and libraries.

Switch from realall to beforeinstall target in .syms files. This is more
reliable in MKSANITIZER.


# 1.330 26-Aug-2019 kamil

Correct the build rules of LLVM sanitizers

Fix generation of .a.syms files in LLVM sanitizers. The old rules weren't
functional and sometimes they were fatal in the build.

Add the .a.syms files to distribution sets.
These files are generated only in certain .a files in 64bit version of
sanitizers.

Correct the location of files with LLVM sanitizers. Move the LLVM sanitizer
entries from base to comp files.


# 1.329 25-Aug-2019 kamil

Rework the LLVM compiler_rt build rules

Register external/bsd/compiler_rt as a _SUBDIR. This will allow to handle
properly includes specific for compiler_rt.

Centralize build_install target for external/bsd/compiler_rt.

With the above changes MKOBJDIR is now respected properly for me.

Do not install LLVM sanitizers into TOOLDIR for !HAVE_LLVM.


# 1.328 23-Aug-2019 kamil

Enhance MKSANITIZER support

Add i386 support for LLVM sanitizers.

Add new build phases do-sanitizer-* for building LLVM sanitizers after libs
and before other programs. This phase is important as sanitizers need
to link with libs and sanitized programs must link with sanitizer runtimes.


Revision tags: netbsd-9-base
# 1.327 14-Jun-2019 martin

branches: 1.327.2;
Use the generated "postinstall" in the objdir for postinstall-check
and postinstall-fix targets - we do not have a simple postinstall script
in the source tree any more.


Revision tags: phil-wifi-20190609
# 1.326 06-Jun-2019 martin

Fix editor mishap


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
# 1.325 11-Nov-2018 maya

.WAIT for tools to complete.
There's a lot of waits inside tools, but nothing that promises that we haven't
started doing the next subdir in the top level.

Shows up as warnings in the cleandir stage on releng builds:

cleandir ===> external/mit/xorg/server/drivers/xf86-video-suncg6
cleandir ===> lib/libpam/modules/pam_deny
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found
nbmake[9]: "../../Makefile.xf86-driver" line 23: warning: "/home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk '/^PACKAGE_VERSION=/ { match($1, "[0-9]+\\.[0-9]+\\.[0-9]+"); version = substr($1, RSTART, RLENGTH); } END { print version }' /home/source/ab/HEAD-llvm/xsrc/external/mit/xf86-video-ati/dist/configure" returned non-zero status
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found


Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.324 02-May-2018 pgoyette

branches: 1.324.2;
Re-add files that were accidentally deleted in my previous commit.


# 1.323 02-May-2018 pgoyette

Synch with HEAD


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
# 1.322 13-Mar-2018 mrg

include bsd.clean.mk so that we actually clean up the attempted "params"


Revision tags: pgoyette-compat-base
# 1.321 06-Dec-2017 uwe

branches: 1.321.2;
Include somewhat misleadingly named do-x11 into BUILDTARGETS even with
NOBINARIES set (subject to MKX11).


# 1.320 06-Dec-2017 uwe

do-x11 target builds and installs only the tools and libraries, X11
programs are built during the regular recursive build in extsrc. Edit
its description accordingly and move it before do-build to match their
order in BUILDTARGETS.

While here, drop the "either" clause that has lost its "or" a few
years ago when xfree86 reachover was removed.


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.337 11-Jun-2023 lukem

more NBUILDJOBS deprecation

The NBUILDJOBS option was deprecated in 2002;
there's no need to keep warning about it,
remove from params / show-params,
and only document as obsolete.


# 1.336 02-Jun-2023 lukem

build.sh: add show-params operation

Add show-params operation to the makefile target, and reword
params operation to describe what it's done since 2012.

(In 2012-11-04 the Makefile's previous params target was renamed
to show-params and a new params target was added to save a 'params'
file, and build.sh wasn't adapted.)


Revision tags: netbsd-10-base
# 1.335 21-Aug-2022 lukem

Deprecate extsrc/, EXTSRCSRCDIR, MKEXTSRC

Remove support for building extsrc/:
1. Makefile: remove do-extsrc target.
2. build.sh: remove options -y and -Y extsrcdir.
3. distrib/sets: remove support for extsrc in various tools
including the options -L ext and -y, and the extsrc sets.
4. doc/BUILDING.mdoc: remove docs for extsrc/, EXTSRCSRCDIR, MKEXTSRC (etc)
5. bsd.own.mk and various Makefiles: remove support for extsrc/,
EXTSRCSRCDIR, MKEXTSRC.

As proposed on tech-kern and tech-userlevel on 2022-01-07
and followed up on 2022-08-21.


# 1.334 19-Mar-2022 rillig

Makefile: fix location of postinstall program for MAKEVERBOSE > 2

If MAKEVERBOSE > 2, each shell command from a make target is echoed.
This resulted in two additional words ending up in the variable
_POSTINSTALL. Noticed by Brad Harder.

Before:
$ make -v _POSTINSTALL MAKEVERBOSE=3
echo .../usr.sbin/postinstall .../usr.sbin/postinstall/postinstall ...

After:
$ make -v _POSTINSTALL MAKEVERBOSE=3
.../usr.sbin/postinstall/postinstall ...


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base
# 1.333 29-Oct-2020 uwe

G/c spurious whitespace.


# 1.332 15-May-2020 christos

automatically remove old debug files for modules.


Revision tags: phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
# 1.331 27-Aug-2019 kamil

Enhance the support of LLVM sanitizers

Define _REENTRANT for MKSANITIZER build. This is needed for at least stdio
code. This caused new build issued with duplicated symbols in few places
and rump kernel code picking different code paths borrowed from libc.
Handle all this in one go.

Add bsd.sanitizer.mk to share common code used by programs and libraries.

Switch from realall to beforeinstall target in .syms files. This is more
reliable in MKSANITIZER.


# 1.330 26-Aug-2019 kamil

Correct the build rules of LLVM sanitizers

Fix generation of .a.syms files in LLVM sanitizers. The old rules weren't
functional and sometimes they were fatal in the build.

Add the .a.syms files to distribution sets.
These files are generated only in certain .a files in 64bit version of
sanitizers.

Correct the location of files with LLVM sanitizers. Move the LLVM sanitizer
entries from base to comp files.


# 1.329 25-Aug-2019 kamil

Rework the LLVM compiler_rt build rules

Register external/bsd/compiler_rt as a _SUBDIR. This will allow to handle
properly includes specific for compiler_rt.

Centralize build_install target for external/bsd/compiler_rt.

With the above changes MKOBJDIR is now respected properly for me.

Do not install LLVM sanitizers into TOOLDIR for !HAVE_LLVM.


# 1.328 23-Aug-2019 kamil

Enhance MKSANITIZER support

Add i386 support for LLVM sanitizers.

Add new build phases do-sanitizer-* for building LLVM sanitizers after libs
and before other programs. This phase is important as sanitizers need
to link with libs and sanitized programs must link with sanitizer runtimes.


Revision tags: netbsd-9-base
# 1.327 14-Jun-2019 martin

branches: 1.327.2;
Use the generated "postinstall" in the objdir for postinstall-check
and postinstall-fix targets - we do not have a simple postinstall script
in the source tree any more.


Revision tags: phil-wifi-20190609
# 1.326 06-Jun-2019 martin

Fix editor mishap


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
# 1.325 11-Nov-2018 maya

.WAIT for tools to complete.
There's a lot of waits inside tools, but nothing that promises that we haven't
started doing the next subdir in the top level.

Shows up as warnings in the cleandir stage on releng builds:

cleandir ===> external/mit/xorg/server/drivers/xf86-video-suncg6
cleandir ===> lib/libpam/modules/pam_deny
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found
nbmake[9]: "../../Makefile.xf86-driver" line 23: warning: "/home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk '/^PACKAGE_VERSION=/ { match($1, "[0-9]+\\.[0-9]+\\.[0-9]+"); version = substr($1, RSTART, RLENGTH); } END { print version }' /home/source/ab/HEAD-llvm/xsrc/external/mit/xf86-video-ati/dist/configure" returned non-zero status
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found


Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.324 02-May-2018 pgoyette

branches: 1.324.2;
Re-add files that were accidentally deleted in my previous commit.


# 1.323 02-May-2018 pgoyette

Synch with HEAD


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
# 1.322 13-Mar-2018 mrg

include bsd.clean.mk so that we actually clean up the attempted "params"


Revision tags: pgoyette-compat-base
# 1.321 06-Dec-2017 uwe

branches: 1.321.2;
Include somewhat misleadingly named do-x11 into BUILDTARGETS even with
NOBINARIES set (subject to MKX11).


# 1.320 06-Dec-2017 uwe

do-x11 target builds and installs only the tools and libraries, X11
programs are built during the regular recursive build in extsrc. Edit
its description accordingly and move it before do-build to match their
order in BUILDTARGETS.

While here, drop the "either" clause that has lost its "or" a few
years ago when xfree86 reachover was removed.


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.335 21-Aug-2022 lukem

Deprecate extsrc/, EXTSRCSRCDIR, MKEXTSRC

Remove support for building extsrc/:
1. Makefile: remove do-extsrc target.
2. build.sh: remove options -y and -Y extsrcdir.
3. distrib/sets: remove support for extsrc in various tools
including the options -L ext and -y, and the extsrc sets.
4. doc/BUILDING.mdoc: remove docs for extsrc/, EXTSRCSRCDIR, MKEXTSRC (etc)
5. bsd.own.mk and various Makefiles: remove support for extsrc/,
EXTSRCSRCDIR, MKEXTSRC.

As proposed on tech-kern and tech-userlevel on 2022-01-07
and followed up on 2022-08-21.


# 1.334 19-Mar-2022 rillig

Makefile: fix location of postinstall program for MAKEVERBOSE > 2

If MAKEVERBOSE > 2, each shell command from a make target is echoed.
This resulted in two additional words ending up in the variable
_POSTINSTALL. Noticed by Brad Harder.

Before:
$ make -v _POSTINSTALL MAKEVERBOSE=3
echo .../usr.sbin/postinstall .../usr.sbin/postinstall/postinstall ...

After:
$ make -v _POSTINSTALL MAKEVERBOSE=3
.../usr.sbin/postinstall/postinstall ...


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base
# 1.333 29-Oct-2020 uwe

G/c spurious whitespace.


# 1.332 15-May-2020 christos

automatically remove old debug files for modules.


Revision tags: phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
# 1.331 27-Aug-2019 kamil

Enhance the support of LLVM sanitizers

Define _REENTRANT for MKSANITIZER build. This is needed for at least stdio
code. This caused new build issued with duplicated symbols in few places
and rump kernel code picking different code paths borrowed from libc.
Handle all this in one go.

Add bsd.sanitizer.mk to share common code used by programs and libraries.

Switch from realall to beforeinstall target in .syms files. This is more
reliable in MKSANITIZER.


# 1.330 26-Aug-2019 kamil

Correct the build rules of LLVM sanitizers

Fix generation of .a.syms files in LLVM sanitizers. The old rules weren't
functional and sometimes they were fatal in the build.

Add the .a.syms files to distribution sets.
These files are generated only in certain .a files in 64bit version of
sanitizers.

Correct the location of files with LLVM sanitizers. Move the LLVM sanitizer
entries from base to comp files.


# 1.329 25-Aug-2019 kamil

Rework the LLVM compiler_rt build rules

Register external/bsd/compiler_rt as a _SUBDIR. This will allow to handle
properly includes specific for compiler_rt.

Centralize build_install target for external/bsd/compiler_rt.

With the above changes MKOBJDIR is now respected properly for me.

Do not install LLVM sanitizers into TOOLDIR for !HAVE_LLVM.


# 1.328 23-Aug-2019 kamil

Enhance MKSANITIZER support

Add i386 support for LLVM sanitizers.

Add new build phases do-sanitizer-* for building LLVM sanitizers after libs
and before other programs. This phase is important as sanitizers need
to link with libs and sanitized programs must link with sanitizer runtimes.


Revision tags: netbsd-9-base
# 1.327 14-Jun-2019 martin

branches: 1.327.2;
Use the generated "postinstall" in the objdir for postinstall-check
and postinstall-fix targets - we do not have a simple postinstall script
in the source tree any more.


Revision tags: phil-wifi-20190609
# 1.326 06-Jun-2019 martin

Fix editor mishap


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
# 1.325 11-Nov-2018 maya

.WAIT for tools to complete.
There's a lot of waits inside tools, but nothing that promises that we haven't
started doing the next subdir in the top level.

Shows up as warnings in the cleandir stage on releng builds:

cleandir ===> external/mit/xorg/server/drivers/xf86-video-suncg6
cleandir ===> lib/libpam/modules/pam_deny
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found
nbmake[9]: "../../Makefile.xf86-driver" line 23: warning: "/home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk '/^PACKAGE_VERSION=/ { match($1, "[0-9]+\\.[0-9]+\\.[0-9]+"); version = substr($1, RSTART, RLENGTH); } END { print version }' /home/source/ab/HEAD-llvm/xsrc/external/mit/xf86-video-ati/dist/configure" returned non-zero status
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found


Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.324 02-May-2018 pgoyette

branches: 1.324.2;
Re-add files that were accidentally deleted in my previous commit.


# 1.323 02-May-2018 pgoyette

Synch with HEAD


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
# 1.322 13-Mar-2018 mrg

include bsd.clean.mk so that we actually clean up the attempted "params"


Revision tags: pgoyette-compat-base
# 1.321 06-Dec-2017 uwe

branches: 1.321.2;
Include somewhat misleadingly named do-x11 into BUILDTARGETS even with
NOBINARIES set (subject to MKX11).


# 1.320 06-Dec-2017 uwe

do-x11 target builds and installs only the tools and libraries, X11
programs are built during the regular recursive build in extsrc. Edit
its description accordingly and move it before do-build to match their
order in BUILDTARGETS.

While here, drop the "either" clause that has lost its "or" a few
years ago when xfree86 reachover was removed.


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.334 19-Mar-2022 rillig

Makefile: fix location of postinstall program for MAKEVERBOSE > 2

If MAKEVERBOSE > 2, each shell command from a make target is echoed.
This resulted in two additional words ending up in the variable
_POSTINSTALL. Noticed by Brad Harder.

Before:
$ make -v _POSTINSTALL MAKEVERBOSE=3
echo .../usr.sbin/postinstall .../usr.sbin/postinstall/postinstall ...

After:
$ make -v _POSTINSTALL MAKEVERBOSE=3
.../usr.sbin/postinstall/postinstall ...


Revision tags: cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base
# 1.333 29-Oct-2020 uwe

G/c spurious whitespace.


# 1.332 15-May-2020 christos

automatically remove old debug files for modules.


Revision tags: phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
# 1.331 27-Aug-2019 kamil

Enhance the support of LLVM sanitizers

Define _REENTRANT for MKSANITIZER build. This is needed for at least stdio
code. This caused new build issued with duplicated symbols in few places
and rump kernel code picking different code paths borrowed from libc.
Handle all this in one go.

Add bsd.sanitizer.mk to share common code used by programs and libraries.

Switch from realall to beforeinstall target in .syms files. This is more
reliable in MKSANITIZER.


# 1.330 26-Aug-2019 kamil

Correct the build rules of LLVM sanitizers

Fix generation of .a.syms files in LLVM sanitizers. The old rules weren't
functional and sometimes they were fatal in the build.

Add the .a.syms files to distribution sets.
These files are generated only in certain .a files in 64bit version of
sanitizers.

Correct the location of files with LLVM sanitizers. Move the LLVM sanitizer
entries from base to comp files.


# 1.329 25-Aug-2019 kamil

Rework the LLVM compiler_rt build rules

Register external/bsd/compiler_rt as a _SUBDIR. This will allow to handle
properly includes specific for compiler_rt.

Centralize build_install target for external/bsd/compiler_rt.

With the above changes MKOBJDIR is now respected properly for me.

Do not install LLVM sanitizers into TOOLDIR for !HAVE_LLVM.


# 1.328 23-Aug-2019 kamil

Enhance MKSANITIZER support

Add i386 support for LLVM sanitizers.

Add new build phases do-sanitizer-* for building LLVM sanitizers after libs
and before other programs. This phase is important as sanitizers need
to link with libs and sanitized programs must link with sanitizer runtimes.


Revision tags: netbsd-9-base
# 1.327 14-Jun-2019 martin

branches: 1.327.2;
Use the generated "postinstall" in the objdir for postinstall-check
and postinstall-fix targets - we do not have a simple postinstall script
in the source tree any more.


Revision tags: phil-wifi-20190609
# 1.326 06-Jun-2019 martin

Fix editor mishap


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
# 1.325 11-Nov-2018 maya

.WAIT for tools to complete.
There's a lot of waits inside tools, but nothing that promises that we haven't
started doing the next subdir in the top level.

Shows up as warnings in the cleandir stage on releng builds:

cleandir ===> external/mit/xorg/server/drivers/xf86-video-suncg6
cleandir ===> lib/libpam/modules/pam_deny
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found
nbmake[9]: "../../Makefile.xf86-driver" line 23: warning: "/home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk '/^PACKAGE_VERSION=/ { match($1, "[0-9]+\\.[0-9]+\\.[0-9]+"); version = substr($1, RSTART, RLENGTH); } END { print version }' /home/source/ab/HEAD-llvm/xsrc/external/mit/xf86-video-ati/dist/configure" returned non-zero status
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found


Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.324 02-May-2018 pgoyette

branches: 1.324.2;
Re-add files that were accidentally deleted in my previous commit.


# 1.323 02-May-2018 pgoyette

Synch with HEAD


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
# 1.322 13-Mar-2018 mrg

include bsd.clean.mk so that we actually clean up the attempted "params"


Revision tags: pgoyette-compat-base
# 1.321 06-Dec-2017 uwe

branches: 1.321.2;
Include somewhat misleadingly named do-x11 into BUILDTARGETS even with
NOBINARIES set (subject to MKX11).


# 1.320 06-Dec-2017 uwe

do-x11 target builds and installs only the tools and libraries, X11
programs are built during the regular recursive build in extsrc. Edit
its description accordingly and move it before do-build to match their
order in BUILDTARGETS.

While here, drop the "either" clause that has lost its "or" a few
years ago when xfree86 reachover was removed.


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.333 29-Oct-2020 uwe

G/c spurious whitespace.


# 1.332 15-May-2020 christos

automatically remove old debug files for modules.


Revision tags: phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
# 1.331 27-Aug-2019 kamil

Enhance the support of LLVM sanitizers

Define _REENTRANT for MKSANITIZER build. This is needed for at least stdio
code. This caused new build issued with duplicated symbols in few places
and rump kernel code picking different code paths borrowed from libc.
Handle all this in one go.

Add bsd.sanitizer.mk to share common code used by programs and libraries.

Switch from realall to beforeinstall target in .syms files. This is more
reliable in MKSANITIZER.


# 1.330 26-Aug-2019 kamil

Correct the build rules of LLVM sanitizers

Fix generation of .a.syms files in LLVM sanitizers. The old rules weren't
functional and sometimes they were fatal in the build.

Add the .a.syms files to distribution sets.
These files are generated only in certain .a files in 64bit version of
sanitizers.

Correct the location of files with LLVM sanitizers. Move the LLVM sanitizer
entries from base to comp files.


# 1.329 25-Aug-2019 kamil

Rework the LLVM compiler_rt build rules

Register external/bsd/compiler_rt as a _SUBDIR. This will allow to handle
properly includes specific for compiler_rt.

Centralize build_install target for external/bsd/compiler_rt.

With the above changes MKOBJDIR is now respected properly for me.

Do not install LLVM sanitizers into TOOLDIR for !HAVE_LLVM.


# 1.328 23-Aug-2019 kamil

Enhance MKSANITIZER support

Add i386 support for LLVM sanitizers.

Add new build phases do-sanitizer-* for building LLVM sanitizers after libs
and before other programs. This phase is important as sanitizers need
to link with libs and sanitized programs must link with sanitizer runtimes.


Revision tags: netbsd-9-base
# 1.327 14-Jun-2019 martin

branches: 1.327.2;
Use the generated "postinstall" in the objdir for postinstall-check
and postinstall-fix targets - we do not have a simple postinstall script
in the source tree any more.


Revision tags: phil-wifi-20190609
# 1.326 06-Jun-2019 martin

Fix editor mishap


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
# 1.325 11-Nov-2018 maya

.WAIT for tools to complete.
There's a lot of waits inside tools, but nothing that promises that we haven't
started doing the next subdir in the top level.

Shows up as warnings in the cleandir stage on releng builds:

cleandir ===> external/mit/xorg/server/drivers/xf86-video-suncg6
cleandir ===> lib/libpam/modules/pam_deny
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found
nbmake[9]: "../../Makefile.xf86-driver" line 23: warning: "/home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk '/^PACKAGE_VERSION=/ { match($1, "[0-9]+\\.[0-9]+\\.[0-9]+"); version = substr($1, RSTART, RLENGTH); } END { print version }' /home/source/ab/HEAD-llvm/xsrc/external/mit/xf86-video-ati/dist/configure" returned non-zero status
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found


Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.324 02-May-2018 pgoyette

branches: 1.324.2;
Re-add files that were accidentally deleted in my previous commit.


# 1.323 02-May-2018 pgoyette

Synch with HEAD


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
# 1.322 13-Mar-2018 mrg

include bsd.clean.mk so that we actually clean up the attempted "params"


Revision tags: pgoyette-compat-base
# 1.321 06-Dec-2017 uwe

branches: 1.321.2;
Include somewhat misleadingly named do-x11 into BUILDTARGETS even with
NOBINARIES set (subject to MKX11).


# 1.320 06-Dec-2017 uwe

do-x11 target builds and installs only the tools and libraries, X11
programs are built during the regular recursive build in extsrc. Edit
its description accordingly and move it before do-build to match their
order in BUILDTARGETS.

While here, drop the "either" clause that has lost its "or" a few
years ago when xfree86 reachover was removed.


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.332 15-May-2020 christos

automatically remove old debug files for modules.


Revision tags: phil-wifi-20200421 phil-wifi-20200411 is-mlppp-base phil-wifi-20200406 phil-wifi-20191119
# 1.331 27-Aug-2019 kamil

Enhance the support of LLVM sanitizers

Define _REENTRANT for MKSANITIZER build. This is needed for at least stdio
code. This caused new build issued with duplicated symbols in few places
and rump kernel code picking different code paths borrowed from libc.
Handle all this in one go.

Add bsd.sanitizer.mk to share common code used by programs and libraries.

Switch from realall to beforeinstall target in .syms files. This is more
reliable in MKSANITIZER.


# 1.330 26-Aug-2019 kamil

Correct the build rules of LLVM sanitizers

Fix generation of .a.syms files in LLVM sanitizers. The old rules weren't
functional and sometimes they were fatal in the build.

Add the .a.syms files to distribution sets.
These files are generated only in certain .a files in 64bit version of
sanitizers.

Correct the location of files with LLVM sanitizers. Move the LLVM sanitizer
entries from base to comp files.


# 1.329 25-Aug-2019 kamil

Rework the LLVM compiler_rt build rules

Register external/bsd/compiler_rt as a _SUBDIR. This will allow to handle
properly includes specific for compiler_rt.

Centralize build_install target for external/bsd/compiler_rt.

With the above changes MKOBJDIR is now respected properly for me.

Do not install LLVM sanitizers into TOOLDIR for !HAVE_LLVM.


# 1.328 23-Aug-2019 kamil

Enhance MKSANITIZER support

Add i386 support for LLVM sanitizers.

Add new build phases do-sanitizer-* for building LLVM sanitizers after libs
and before other programs. This phase is important as sanitizers need
to link with libs and sanitized programs must link with sanitizer runtimes.


Revision tags: netbsd-9-base
# 1.327 14-Jun-2019 martin

branches: 1.327.2;
Use the generated "postinstall" in the objdir for postinstall-check
and postinstall-fix targets - we do not have a simple postinstall script
in the source tree any more.


Revision tags: phil-wifi-20190609
# 1.326 06-Jun-2019 martin

Fix editor mishap


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
# 1.325 11-Nov-2018 maya

.WAIT for tools to complete.
There's a lot of waits inside tools, but nothing that promises that we haven't
started doing the next subdir in the top level.

Shows up as warnings in the cleandir stage on releng builds:

cleandir ===> external/mit/xorg/server/drivers/xf86-video-suncg6
cleandir ===> lib/libpam/modules/pam_deny
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found
nbmake[9]: "../../Makefile.xf86-driver" line 23: warning: "/home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk '/^PACKAGE_VERSION=/ { match($1, "[0-9]+\\.[0-9]+\\.[0-9]+"); version = substr($1, RSTART, RLENGTH); } END { print version }' /home/source/ab/HEAD-llvm/xsrc/external/mit/xf86-video-ati/dist/configure" returned non-zero status
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found


Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.324 02-May-2018 pgoyette

branches: 1.324.2;
Re-add files that were accidentally deleted in my previous commit.


# 1.323 02-May-2018 pgoyette

Synch with HEAD


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
# 1.322 13-Mar-2018 mrg

include bsd.clean.mk so that we actually clean up the attempted "params"


Revision tags: pgoyette-compat-base
# 1.321 06-Dec-2017 uwe

branches: 1.321.2;
Include somewhat misleadingly named do-x11 into BUILDTARGETS even with
NOBINARIES set (subject to MKX11).


# 1.320 06-Dec-2017 uwe

do-x11 target builds and installs only the tools and libraries, X11
programs are built during the regular recursive build in extsrc. Edit
its description accordingly and move it before do-build to match their
order in BUILDTARGETS.

While here, drop the "either" clause that has lost its "or" a few
years ago when xfree86 reachover was removed.


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: netbsd-8-2-RELEASE netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.331 27-Aug-2019 kamil

Enhance the support of LLVM sanitizers

Define _REENTRANT for MKSANITIZER build. This is needed for at least stdio
code. This caused new build issued with duplicated symbols in few places
and rump kernel code picking different code paths borrowed from libc.
Handle all this in one go.

Add bsd.sanitizer.mk to share common code used by programs and libraries.

Switch from realall to beforeinstall target in .syms files. This is more
reliable in MKSANITIZER.


# 1.330 26-Aug-2019 kamil

Correct the build rules of LLVM sanitizers

Fix generation of .a.syms files in LLVM sanitizers. The old rules weren't
functional and sometimes they were fatal in the build.

Add the .a.syms files to distribution sets.
These files are generated only in certain .a files in 64bit version of
sanitizers.

Correct the location of files with LLVM sanitizers. Move the LLVM sanitizer
entries from base to comp files.


# 1.329 25-Aug-2019 kamil

Rework the LLVM compiler_rt build rules

Register external/bsd/compiler_rt as a _SUBDIR. This will allow to handle
properly includes specific for compiler_rt.

Centralize build_install target for external/bsd/compiler_rt.

With the above changes MKOBJDIR is now respected properly for me.

Do not install LLVM sanitizers into TOOLDIR for !HAVE_LLVM.


# 1.328 23-Aug-2019 kamil

Enhance MKSANITIZER support

Add i386 support for LLVM sanitizers.

Add new build phases do-sanitizer-* for building LLVM sanitizers after libs
and before other programs. This phase is important as sanitizers need
to link with libs and sanitized programs must link with sanitizer runtimes.


Revision tags: netbsd-9-base
# 1.327 14-Jun-2019 martin

Use the generated "postinstall" in the objdir for postinstall-check
and postinstall-fix targets - we do not have a simple postinstall script
in the source tree any more.


Revision tags: phil-wifi-20190609
# 1.326 06-Jun-2019 martin

Fix editor mishap


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
# 1.325 11-Nov-2018 maya

.WAIT for tools to complete.
There's a lot of waits inside tools, but nothing that promises that we haven't
started doing the next subdir in the top level.

Shows up as warnings in the cleandir stage on releng builds:

cleandir ===> external/mit/xorg/server/drivers/xf86-video-suncg6
cleandir ===> lib/libpam/modules/pam_deny
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found
nbmake[9]: "../../Makefile.xf86-driver" line 23: warning: "/home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk '/^PACKAGE_VERSION=/ { match($1, "[0-9]+\\.[0-9]+\\.[0-9]+"); version = substr($1, RSTART, RLENGTH); } END { print version }' /home/source/ab/HEAD-llvm/xsrc/external/mit/xf86-video-ati/dist/configure" returned non-zero status
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found


Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.324 02-May-2018 pgoyette

branches: 1.324.2;
Re-add files that were accidentally deleted in my previous commit.


# 1.323 02-May-2018 pgoyette

Synch with HEAD


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
# 1.322 13-Mar-2018 mrg

include bsd.clean.mk so that we actually clean up the attempted "params"


Revision tags: pgoyette-compat-base
# 1.321 06-Dec-2017 uwe

branches: 1.321.2;
Include somewhat misleadingly named do-x11 into BUILDTARGETS even with
NOBINARIES set (subject to MKX11).


# 1.320 06-Dec-2017 uwe

do-x11 target builds and installs only the tools and libraries, X11
programs are built during the regular recursive build in extsrc. Edit
its description accordingly and move it before do-build to match their
order in BUILDTARGETS.

While here, drop the "either" clause that has lost its "or" a few
years ago when xfree86 reachover was removed.


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.330 26-Aug-2019 kamil

Correct the build rules of LLVM sanitizers

Fix generation of .a.syms files in LLVM sanitizers. The old rules weren't
functional and sometimes they were fatal in the build.

Add the .a.syms files to distribution sets.
These files are generated only in certain .a files in 64bit version of
sanitizers.

Correct the location of files with LLVM sanitizers. Move the LLVM sanitizer
entries from base to comp files.


# 1.329 25-Aug-2019 kamil

Rework the LLVM compiler_rt build rules

Register external/bsd/compiler_rt as a _SUBDIR. This will allow to handle
properly includes specific for compiler_rt.

Centralize build_install target for external/bsd/compiler_rt.

With the above changes MKOBJDIR is now respected properly for me.

Do not install LLVM sanitizers into TOOLDIR for !HAVE_LLVM.


# 1.328 23-Aug-2019 kamil

Enhance MKSANITIZER support

Add i386 support for LLVM sanitizers.

Add new build phases do-sanitizer-* for building LLVM sanitizers after libs
and before other programs. This phase is important as sanitizers need
to link with libs and sanitized programs must link with sanitizer runtimes.


Revision tags: netbsd-9-base
# 1.327 14-Jun-2019 martin

Use the generated "postinstall" in the objdir for postinstall-check
and postinstall-fix targets - we do not have a simple postinstall script
in the source tree any more.


Revision tags: phil-wifi-20190609
# 1.326 06-Jun-2019 martin

Fix editor mishap


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
# 1.325 11-Nov-2018 maya

.WAIT for tools to complete.
There's a lot of waits inside tools, but nothing that promises that we haven't
started doing the next subdir in the top level.

Shows up as warnings in the cleandir stage on releng builds:

cleandir ===> external/mit/xorg/server/drivers/xf86-video-suncg6
cleandir ===> lib/libpam/modules/pam_deny
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found
nbmake[9]: "../../Makefile.xf86-driver" line 23: warning: "/home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk '/^PACKAGE_VERSION=/ { match($1, "[0-9]+\\.[0-9]+\\.[0-9]+"); version = substr($1, RSTART, RLENGTH); } END { print version }' /home/source/ab/HEAD-llvm/xsrc/external/mit/xf86-video-ati/dist/configure" returned non-zero status
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found


Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.324 02-May-2018 pgoyette

branches: 1.324.2;
Re-add files that were accidentally deleted in my previous commit.


# 1.323 02-May-2018 pgoyette

Synch with HEAD


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
# 1.322 13-Mar-2018 mrg

include bsd.clean.mk so that we actually clean up the attempted "params"


Revision tags: pgoyette-compat-base
# 1.321 06-Dec-2017 uwe

branches: 1.321.2;
Include somewhat misleadingly named do-x11 into BUILDTARGETS even with
NOBINARIES set (subject to MKX11).


# 1.320 06-Dec-2017 uwe

do-x11 target builds and installs only the tools and libraries, X11
programs are built during the regular recursive build in extsrc. Edit
its description accordingly and move it before do-build to match their
order in BUILDTARGETS.

While here, drop the "either" clause that has lost its "or" a few
years ago when xfree86 reachover was removed.


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.329 25-Aug-2019 kamil

Rework the LLVM compiler_rt build rules

Register external/bsd/compiler_rt as a _SUBDIR. This will allow to handle
properly includes specific for compiler_rt.

Centralize build_install target for external/bsd/compiler_rt.

With the above changes MKOBJDIR is now respected properly for me.

Do not install LLVM sanitizers into TOOLDIR for !HAVE_LLVM.


# 1.328 23-Aug-2019 kamil

Enhance MKSANITIZER support

Add i386 support for LLVM sanitizers.

Add new build phases do-sanitizer-* for building LLVM sanitizers after libs
and before other programs. This phase is important as sanitizers need
to link with libs and sanitized programs must link with sanitizer runtimes.


Revision tags: netbsd-9-base
# 1.327 14-Jun-2019 martin

Use the generated "postinstall" in the objdir for postinstall-check
and postinstall-fix targets - we do not have a simple postinstall script
in the source tree any more.


Revision tags: phil-wifi-20190609
# 1.326 06-Jun-2019 martin

Fix editor mishap


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
# 1.325 11-Nov-2018 maya

.WAIT for tools to complete.
There's a lot of waits inside tools, but nothing that promises that we haven't
started doing the next subdir in the top level.

Shows up as warnings in the cleandir stage on releng builds:

cleandir ===> external/mit/xorg/server/drivers/xf86-video-suncg6
cleandir ===> lib/libpam/modules/pam_deny
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found
nbmake[9]: "../../Makefile.xf86-driver" line 23: warning: "/home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk '/^PACKAGE_VERSION=/ { match($1, "[0-9]+\\.[0-9]+\\.[0-9]+"); version = substr($1, RSTART, RLENGTH); } END { print version }' /home/source/ab/HEAD-llvm/xsrc/external/mit/xf86-video-ati/dist/configure" returned non-zero status
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found


Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.324 02-May-2018 pgoyette

branches: 1.324.2;
Re-add files that were accidentally deleted in my previous commit.


# 1.323 02-May-2018 pgoyette

Synch with HEAD


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
# 1.322 13-Mar-2018 mrg

include bsd.clean.mk so that we actually clean up the attempted "params"


Revision tags: pgoyette-compat-base
# 1.321 06-Dec-2017 uwe

branches: 1.321.2;
Include somewhat misleadingly named do-x11 into BUILDTARGETS even with
NOBINARIES set (subject to MKX11).


# 1.320 06-Dec-2017 uwe

do-x11 target builds and installs only the tools and libraries, X11
programs are built during the regular recursive build in extsrc. Edit
its description accordingly and move it before do-build to match their
order in BUILDTARGETS.

While here, drop the "either" clause that has lost its "or" a few
years ago when xfree86 reachover was removed.


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.328 23-Aug-2019 kamil

Enhance MKSANITIZER support

Add i386 support for LLVM sanitizers.

Add new build phases do-sanitizer-* for building LLVM sanitizers after libs
and before other programs. This phase is important as sanitizers need
to link with libs and sanitized programs must link with sanitizer runtimes.


Revision tags: netbsd-9-base
# 1.327 14-Jun-2019 martin

Use the generated "postinstall" in the objdir for postinstall-check
and postinstall-fix targets - we do not have a simple postinstall script
in the source tree any more.


Revision tags: phil-wifi-20190609
# 1.326 06-Jun-2019 martin

Fix editor mishap


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
# 1.325 11-Nov-2018 maya

.WAIT for tools to complete.
There's a lot of waits inside tools, but nothing that promises that we haven't
started doing the next subdir in the top level.

Shows up as warnings in the cleandir stage on releng builds:

cleandir ===> external/mit/xorg/server/drivers/xf86-video-suncg6
cleandir ===> lib/libpam/modules/pam_deny
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found
nbmake[9]: "../../Makefile.xf86-driver" line 23: warning: "/home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk '/^PACKAGE_VERSION=/ { match($1, "[0-9]+\\.[0-9]+\\.[0-9]+"); version = substr($1, RSTART, RLENGTH); } END { print version }' /home/source/ab/HEAD-llvm/xsrc/external/mit/xf86-video-ati/dist/configure" returned non-zero status
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found


Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.324 02-May-2018 pgoyette

branches: 1.324.2;
Re-add files that were accidentally deleted in my previous commit.


# 1.323 02-May-2018 pgoyette

Synch with HEAD


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
# 1.322 13-Mar-2018 mrg

include bsd.clean.mk so that we actually clean up the attempted "params"


Revision tags: pgoyette-compat-base
# 1.321 06-Dec-2017 uwe

branches: 1.321.2;
Include somewhat misleadingly named do-x11 into BUILDTARGETS even with
NOBINARIES set (subject to MKX11).


# 1.320 06-Dec-2017 uwe

do-x11 target builds and installs only the tools and libraries, X11
programs are built during the regular recursive build in extsrc. Edit
its description accordingly and move it before do-build to match their
order in BUILDTARGETS.

While here, drop the "either" clause that has lost its "or" a few
years ago when xfree86 reachover was removed.


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.327 14-Jun-2019 martin

Use the generated "postinstall" in the objdir for postinstall-check
and postinstall-fix targets - we do not have a simple postinstall script
in the source tree any more.


Revision tags: phil-wifi-20190609
# 1.326 06-Jun-2019 martin

Fix editor mishap


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
# 1.325 11-Nov-2018 maya

.WAIT for tools to complete.
There's a lot of waits inside tools, but nothing that promises that we haven't
started doing the next subdir in the top level.

Shows up as warnings in the cleandir stage on releng builds:

cleandir ===> external/mit/xorg/server/drivers/xf86-video-suncg6
cleandir ===> lib/libpam/modules/pam_deny
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found
nbmake[9]: "../../Makefile.xf86-driver" line 23: warning: "/home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk '/^PACKAGE_VERSION=/ { match($1, "[0-9]+\\.[0-9]+\\.[0-9]+"); version = substr($1, RSTART, RLENGTH); } END { print version }' /home/source/ab/HEAD-llvm/xsrc/external/mit/xf86-video-ati/dist/configure" returned non-zero status
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found


Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.324 02-May-2018 pgoyette

branches: 1.324.2;
Re-add files that were accidentally deleted in my previous commit.


# 1.323 02-May-2018 pgoyette

Synch with HEAD


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
# 1.322 13-Mar-2018 mrg

include bsd.clean.mk so that we actually clean up the attempted "params"


Revision tags: pgoyette-compat-base
# 1.321 06-Dec-2017 uwe

branches: 1.321.2;
Include somewhat misleadingly named do-x11 into BUILDTARGETS even with
NOBINARIES set (subject to MKX11).


# 1.320 06-Dec-2017 uwe

do-x11 target builds and installs only the tools and libraries, X11
programs are built during the regular recursive build in extsrc. Edit
its description accordingly and move it before do-build to match their
order in BUILDTARGETS.

While here, drop the "either" clause that has lost its "or" a few
years ago when xfree86 reachover was removed.


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.326 06-Jun-2019 martin

Fix editor mishap


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
# 1.325 11-Nov-2018 maya

.WAIT for tools to complete.
There's a lot of waits inside tools, but nothing that promises that we haven't
started doing the next subdir in the top level.

Shows up as warnings in the cleandir stage on releng builds:

cleandir ===> external/mit/xorg/server/drivers/xf86-video-suncg6
cleandir ===> lib/libpam/modules/pam_deny
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found
nbmake[9]: "../../Makefile.xf86-driver" line 23: warning: "/home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk '/^PACKAGE_VERSION=/ { match($1, "[0-9]+\\.[0-9]+\\.[0-9]+"); version = substr($1, RSTART, RLENGTH); } END { print version }' /home/source/ab/HEAD-llvm/xsrc/external/mit/xf86-video-ati/dist/configure" returned non-zero status
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found


Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.324 02-May-2018 pgoyette

Re-add files that were accidentally deleted in my previous commit.


# 1.323 02-May-2018 pgoyette

Synch with HEAD


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
# 1.322 13-Mar-2018 mrg

include bsd.clean.mk so that we actually clean up the attempted "params"


Revision tags: pgoyette-compat-base
# 1.321 06-Dec-2017 uwe

branches: 1.321.2;
Include somewhat misleadingly named do-x11 into BUILDTARGETS even with
NOBINARIES set (subject to MKX11).


# 1.320 06-Dec-2017 uwe

do-x11 target builds and installs only the tools and libraries, X11
programs are built during the regular recursive build in extsrc. Edit
its description accordingly and move it before do-build to match their
order in BUILDTARGETS.

While here, drop the "either" clause that has lost its "or" a few
years ago when xfree86 reachover was removed.


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: netbsd-8-1-RELEASE netbsd-8-1-RC1 netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


Revision tags: pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126
# 1.325 11-Nov-2018 maya

.WAIT for tools to complete.
There's a lot of waits inside tools, but nothing that promises that we haven't
started doing the next subdir in the top level.

Shows up as warnings in the cleandir stage on releng builds:

cleandir ===> external/mit/xorg/server/drivers/xf86-video-suncg6
cleandir ===> lib/libpam/modules/pam_deny
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found
nbmake[9]: "../../Makefile.xf86-driver" line 23: warning: "/home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk '/^PACKAGE_VERSION=/ { match($1, "[0-9]+\\.[0-9]+\\.[0-9]+"); version = substr($1, RSTART, RLENGTH); } END { print version }' /home/source/ab/HEAD-llvm/xsrc/external/mit/xf86-video-ati/dist/configure" returned non-zero status
sh: /home/builds/ab/HEAD-llvm/sparc64/201811091720Z-tools/bin/nbawk: not found


Revision tags: pgoyette-compat-1020 pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base pgoyette-compat-0625 pgoyette-compat-0521
# 1.324 02-May-2018 pgoyette

Re-add files that were accidentally deleted in my previous commit.


# 1.323 02-May-2018 pgoyette

Synch with HEAD


Revision tags: pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315
# 1.322 13-Mar-2018 mrg

include bsd.clean.mk so that we actually clean up the attempted "params"


Revision tags: pgoyette-compat-base
# 1.321 06-Dec-2017 uwe

branches: 1.321.2;
Include somewhat misleadingly named do-x11 into BUILDTARGETS even with
NOBINARIES set (subject to MKX11).


# 1.320 06-Dec-2017 uwe

do-x11 target builds and installs only the tools and libraries, X11
programs are built during the regular recursive build in extsrc. Edit
its description accordingly and move it before do-build to match their
order in BUILDTARGETS.

While here, drop the "either" clause that has lost its "or" a few
years ago when xfree86 reachover was removed.


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.321 06-Dec-2017 uwe

Include somewhat misleadingly named do-x11 into BUILDTARGETS even with
NOBINARIES set (subject to MKX11).


# 1.320 06-Dec-2017 uwe

do-x11 target builds and installs only the tools and libraries, X11
programs are built during the regular recursive build in extsrc. Edit
its description accordingly and move it before do-build to match their
order in BUILDTARGETS.

While here, drop the "either" clause that has lost its "or" a few
years ago when xfree86 reachover was removed.


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: matt-nb8-mediatek-base perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.319 04-Oct-2017 christos

Add NOBINARIES, useful to build tools are libraries which is what's needed
for mknative.


Revision tags: perseant-stdc-iso10646-base netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


Revision tags: prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1
# 1.318 11-Apr-2017 christos

don't descend into gnu


Revision tags: pgoyette-localcount-20170320 bouyer-socketcan-base pgoyette-localcount-20170107 pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 14-Jan-2016 christos

branches: 1.317.2; 1.317.4;
fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 13-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 16-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 22-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 29-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 22-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 06-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 30-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 24-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 29-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 18-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 07-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 30-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 07-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 25-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 02-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 28-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 27-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 27-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 04-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 25-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 21-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 18-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 08-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 05-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 17-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 04-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 04-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 03-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 22-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 26-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 26-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 22-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 26-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 19-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 07-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 01-Mar-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 28-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 13-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 31-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 24-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 24-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 24-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 19-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 19-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 22-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 08-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 09-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 09-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 11-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 08-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 01-Feb-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 04-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 14-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 01-Apr-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 18-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 16-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 13-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 29-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 07-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 16-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 15-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 07-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 21-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 12-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 20-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 15-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 10-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 26-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 27-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 25-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 25-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 25-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 09-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 26-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 14-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 10-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 07-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 08-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 08-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


Revision tags: pgoyette-localcount-20161104 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base
# 1.317 13-Jan-2016 christos

fix direct reference to texinfo, bleh


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 27-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 12-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


Revision tags: yamt-pagecache-base9 riastradh-xf86-video-intel-2-7-1-pre-2-21-15 riastradh-drm2-base3
# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 15-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


Revision tags: agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


Revision tags: yamt-pagecache-base6
# 1.299 17-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 14-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 13-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 13-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


Revision tags: yamt-pagecache-base5
# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


Revision tags: yamt-pagecache-base4 netbsd-6-base
# 1.291 24-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 21-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


Revision tags: yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base
# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 28-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 21-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


Revision tags: cherry-xenmp-base bouyer-quota2-nbase bouyer-quota2-base
# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


Revision tags: matt-mips64-premerge-20101231
# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 05-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


Revision tags: matt-premerge-20091211
# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 29-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


Revision tags: jym-xensuspend-nbase jym-xensuspend-base
# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


Revision tags: netbsd-5-base
# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


Revision tags: matt-mips64-base2
# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 23-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 28-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


Revision tags: wrstuden-revivesa-base-1 yamt-pf42-base4 yamt-pf42-base3 wrstuden-revivesa-base
# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


Revision tags: hpcarm-cleanup-nbase yamt-pf42-baseX yamt-pf42-base2 yamt-pf42-base keiichi-mipv6-base matt-armv6-nbase
# 1.252 17-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


Revision tags: cube-autoconf-base matt-armv6-base hpcarm-cleanup-base
# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 07-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 06-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 29-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


Revision tags: matt-mips64-base
# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


Revision tags: netbsd-4-base
# 1.246 06-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


Revision tags: abandoned-netbsd-4-base
# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 24-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


Revision tags: netbsd-3-base
# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 01-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 27-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 12-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


Revision tags: netbsd-2-0-3-RELEASE netbsd-2-1-RELEASE netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 netbsd-2-0-2-RELEASE netbsd-2-0-1-RELEASE netbsd-2-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base
# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 26-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 26-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 03-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 24-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 20-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 17-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 07-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 04-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 16-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 03-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 03-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 02-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 21-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 25-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 06-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


Revision tags: fvdl_fs64_base
# 1.194 25-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 14-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 25-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 21-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 26-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 25-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 18-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


Revision tags: netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
# 1.175 06-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 02-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 28-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 28-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 28-Feb-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 27-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 20-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 13-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 12-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 30-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 30-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 23-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 23-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 23-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 18-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 18-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 21-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 21-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 07-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


Revision tags: netbsd-1-5-ALPHA2 netbsd-1-5-base
# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


Revision tags: minoura-xpg4dl-base
# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 08-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 08-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 10-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 07-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 26-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 19-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 31-Jan-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


Revision tags: wrstuden-devbsize-19991221 wrstuden-devbsize-base
# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 03-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 30-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


Revision tags: comdex-fall-1999-base
# 1.99 13-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


Revision tags: netbsd-1-4-PATCH002 netbsd-1-4-PATCH001 netbsd-1-4-RELEASE netbsd-1-4-base
# 1.95 31-Mar-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 17-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 15-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 12-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 11-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 28-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 06-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 15-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 14-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 06-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 24-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 24-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 20-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 11-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 19-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 14-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 09-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


Revision tags: netbsd-1-3-base
# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 25-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 26-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


Revision tags: netbsd-1-2-PATCH001 netbsd-1-2-RELEASE netbsd-1-2-BETA netbsd-1-2-base
# 1.35 24-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 24-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 24-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


Revision tags: netbsd-1-1-PATCH001 netbsd-1-1-RELEASE netbsd-1-1-base
# 1.25 08-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 05-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 25-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 18-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 21-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


Revision tags: netbsd-1-0-PATCH06 netbsd-1-0-PATCH05 netbsd-1-0-PATCH04 netbsd-1-0-PATCH03 netbsd-1-0-PATCH02 netbsd-1-0-PATCH1 netbsd-1-0-PATCH0 netbsd-1-0-RELEASE netbsd-1-0-base
# 1.19 13-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 09-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 06-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 07-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


Revision tags: netbsd-0-9-RELEASE netbsd-0-9-BETA netbsd-0-9-ALPHA2 netbsd-0-9-ALPHA netbsd-0-9-base
# 1.13 06-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 28-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


Revision tags: netbsd-0-8 netbsd-alpha-1
# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 07-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


Revision tags: patchkit-0-2-2
# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.316 23-Jul-2015 mrg

remove the xfree86 reachover makefiles and the vast majority of
the support in the rest of the source tree.

X11 sets could use some cleaning up perhaps (just deletion, as
we've never really marked the old X11R6 as obsolete for native
xorg using platforms so far either.)


# 1.315 26-Jun-2015 matt

Add MKCOMPATX11 knob for making X11 compat libraries.


# 1.314 24-Jun-2015 matt

Support building the xorg X11 libraries under MKCOMPAT.
Add XORG_MACHINE_ARCH to compat's bsd.*.mk
Turn xorg makekeys and makestrs into real host tools which are installed into
${TOOLSDIR}


# 1.313 03-May-2015 martin

PR 49870: pass the xsrc path to postinstall


# 1.312 07-Jan-2015 joerg

Reorganise the way xorg is build. Move build of makestrs into src/tools
as it is needed for the "includes" phase. Make it symlink all necessary
headers in obj to decouple it from "includes" itself, breaking the
dependency cycle. Move the do-x11 target between do-lib and do-build, so
that libraries can get the benefit of build_install (correct .WAIT
behavior) and everything else like "includes" uses the plain SUBDIR
entry in external/mit.


# 1.311 05-Nov-2014 snj

iso -> images


# 1.310 18-Aug-2014 plunky

remove obsolete BUILD_CC_LIB_BASEDIR and BUILD_CC_LIB_BASETARGET vars


# 1.309 16-Jun-2014 apb

branches: 1.309.2;
Run "postinstall fix obsolete_stand" just before checkflist,
if we are building with DESTDIR != /


# 1.308 16-Jun-2014 apb

Pass -m MACHINE -a MACHINE_ARCH to postinstall


# 1.307 16-Jun-2014 apb

Pass SED=${TOOL_SED:Q} to postinstall.


# 1.306 12-Jun-2014 mrg

remove the build support for GCC 4.1, and any hacks i found for it.

there could still be more -- i only looked for lines matching
both "HAVE_GCC" and "4" as words (grep -w.)


# 1.305 26-Feb-2014 mrg

branches: 1.305.2;
prepare for moving GCC 4.5 into gcc.old:

- convert to using ${EXTERNAL_GCC_SUBDIR}
- define base-external-gpl3-gcc* subdir as GCC_SUBDIR
- use <bsd.init.mk> over <bsd.own.mk> for a bunch of places; mostly
because it arranges for ../Makefile.inc to be included earlier, and
don't bother including the latter if the former is already included.
- move all .PATH: settings after <bsd.{own,lib}.mk> so that all
valid variables are set before it is evaluated
- rename mknative-gcc* to match their subdir name.

XXX the relationship between the Makefile.inc/Makefile.gcc_path files
is kind of sketchy, it would be great if this was fixed.


# 1.304 15-Jan-2014 christos

eliminate use of bsd.sys.mk from Makefiles


# 1.303 16-Jul-2013 joerg

hp700 rescue/ldd fails on -j16 build if usr.bin/ldd/elf32/libldd_elf32.a
hasn't been made yet. Add an explicit .WAIT before rescue to avoid this.


# 1.302 03-Dec-2012 apb

Add src/etc/Makefile.params, containing the definition of the
RELEASEVARS variable, and commands related to printing the values of
the variables whose names are in RELEASEVARS.

Add an awk script to remove noise printed by "make -j" or high levels
of MAKEVERBOSE, so we get only the variables names and values. The
values are escaped so that variables containing embedded newlines,
quotation marks, and backslashes, are passed through safely.

Adapt src/etc/Makefile and src/Makefile to use the new ${PRINT_PARAMS}
command defined in src/etc/Makefile.params.

Now ${DESTDIR}/etc/release and the params file in the top-level
.OBJDIR should never contain unwanted noise, even after a build with
MAKEVERBOSE=4.


# 1.301 15-Nov-2012 joerg

Move the build_install logic from lib/Makefile into share/mk and re-use
it for tools. The existing logic broke for the LLVM build with the
recent .ORDER changes in make.


# 1.300 04-Nov-2012 apb

Create a "params" file in the top-level .OBJDIR during "make build".
This file will contain the values of all variables that can affect
the build process. Take care not to update the file's timestamp if
the contents do not change.

${_SRC_TOP_OBJ}/params is referenced by ${_NETBSD_VERSION_DEPENDS} in
bsd.own.mk.

Rename the old "params" target to "show-params". This simply
prints the values of the variables that can affect the build.


# 1.299 16-Aug-2012 joerg

branches: 1.299.2;
Implement build_install in src/lib/Makefile, which traverses the
subdirectories and invokes dependall/install. Do this in groups
delimited by .WAIT to ensure that depending libraries can use the
installed versions and don't need to know the locations in the source
tree.

Use this new target in src/Makefile to replace most of the adhoc library
logic with two special cases, src/lib and src/compat. Adjust
sys/Makefile to include the module directory when building them. Add
some necessary .WAITs in src/lib/Makefile to reflect the dependencies
from src/Makefile and also add the rump libraries here.


# 1.298 15-Aug-2012 apb

Add HOST_SH to _POSTINSTALL_ENV; needed for
usr.sbin/postinstall/postinstall revision 1.145.


# 1.297 14-Aug-2012 apb

Pass STAT=${TOOL_STAT:Q} through to postinstall.


# 1.296 14-Aug-2012 apb

TOOL_GREP is defined in share/mk/bsd.own.mk, but is not actually built
from tools/Makefile. So don't try to use it here.


# 1.295 14-Aug-2012 apb

Pass all relevant tool variables to postinstall, not just a subset.


# 1.294 14-Aug-2012 apb

Fix unbalanced quotes in .if ${MKRUMP} != "no"


# 1.293 08-Aug-2012 christos

exclude rump targets if MKRUMP = no


# 1.292 21-Apr-2012 veego

Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


# 1.291 23-Jan-2012 abs

branches: 1.291.2;
s/is the not root/is not the root/ in a comment - from Snader_LB


# 1.290 21-Jan-2012 tsutsui

Add "live-image" and "install-image" target support to build.sh.

"live-image" target builds pre-installed disk images that can be used on
emulators or boot from USB memory sticks to try NetBSD without installation.
Currently amd64, i386, pmax, sparc, sparc64, sun2, sun3, and vax
(which have working emulators and don't require extra tools like preparing
msdosfs or partitioning MD label structures) support this target.

"install-image" target builds an bootable installation disk image that can
be used as an install CD but burned into USB memory sticks etc.
Current only amd64 and i386 (which would support USB boot) have this target.

For more details (and known issue) see following posts on netbsd-bugs@:
http://mail-index.NetBSD.org/netbsd-bugs/2011/08/06/msg023639.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/09/23/msg024207.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/07/msg025166.html
http://mail-index.NetBSD.org/netbsd-bugs/2011/12/08/msg025178.html

No particular comments about implementation, and
"go ahead" comments from mrg@, riz@ and christos@.

Closes PR toolchain/45153 and PR misc/45155.


# 1.289 09-Sep-2011 apb

branches: 1.289.2;
Move the code for creating src/BUILDING from "make build-docs" in
src/Makefile to "make regen" in src/doc/Makefile, and update a comment
in doc/BUILDING.mdoc to match.


# 1.288 08-Aug-2011 jmcneill

Fix typo that prevented installmodules from working with -U


# 1.287 08-Aug-2011 jmcneill

add an installmodules=<dir> command to build.sh


# 1.286 28-Jun-2011 mrg

re-enable the gcc 4.5 crtstuff/libgcc builders now that they work.
also build the gmp, mpfr and mpc libraries in this case.


# 1.285 21-Jun-2011 mrg

fix the parts that build libgcc/crtstuff, etc., for GCC 4.5.


# 1.284 20-Jun-2011 mrg

remove all the code that supported HAVE_GCC=3. mostly from chuq.


# 1.283 15-Jun-2011 mrg

build evbppc modules in 3 different flavours:

- oea (default)
- ibm4xx
- booke

this, together with earlier machine_module[] work, should allow evbppc
platforms to use modules.


# 1.282 29-Jan-2011 jym

branches: 1.282.2;
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.

$ ./build.sh -V INSTALLSETS="base etc" install=idir

should now work as expected.

Reviewed by apb@ on tech-toolchain.


# 1.281 03-Dec-2010 plunky

branches: 1.281.2;
Remove the do-external-lib and do-gnu-lib targets, along with
external/lib/Makefile and crypto/external/lib/Makefile, replacing
them all with SUBDIRs directly from lib/Makefile.

compat/compatsubdirs.mk becomes simpler now, as everything is built
from lib/Makefile, meaning all the libraries will now be built under
compat so update the set lists to account for that.


# 1.280 28-Nov-2010 skrll

Centralise USE_COMPILERCRTSTUFF.

PCC might need help.


# 1.279 22-Nov-2010 plunky

no need to create a do-lib-libdes target, the directory no longer exists


# 1.278 05-Jul-2010 mrg

remove almost all the ability to build netbsd with an a.out target.
we're ELF now, and there are many missing checks against OBJECT_FMT.
if we ever consider switching, the we can figure out what new ones
we need but for now it's just clutter.

this doesn't remove any of the support for exec_aout or any actually
required-for-boot a.out support, only the ability to build a netbsd
release in a.out format. ie, most of this code has been dead for
over a decade.

i've tested builds on vax, amd64, i386, mac68k, macppc, sparc, atari,
amiga, shark, cats, dreamcast, landisk, mmeye and x68k. this covers
the 5 MACHINE_ARCH's affected, and all the other arch code touched.
it also includes some actual run-time testing of sparc, i386 and
shark, and i performed binary comparison upon amiga and x68k as well.


some minor details relevant:
- move shlib.[ch] from ld.aout_so into ldconfig proper, and cut them
down to only the parts ldconfig needs
- remove various unused source files
- switch amiga bootblocks to using elf2bb.h instead of aout2bb.h


# 1.277 10-Jun-2010 pooka

descend into sys/rump/kern


# 1.276 13-Dec-2009 mrg

adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.275 30-Nov-2009 uebayasi

Support "extsrc", externally added programs and libraries. Users can write
their own reach-overs, cross-build, install, and get set files just like base
and X11 / X.org. (These sets are not included as TNF releases.)


# 1.274 04-Sep-2009 pooka

build & install librumpdev_netsmb and librumpfs_smbfs components


# 1.273 29-Aug-2009 dyoung

Let us use MKKMOD=yes to leave the kernel modules out of the
distribution.


# 1.272 03-Jul-2009 pooka

Build modules before rump libs so that something else can be
unwarrantedly blamed for a change.

This commit follows the style guide and is entirely non-build-tested.


# 1.271 07-Jun-2009 christos

add crypto/external to the build.


# 1.270 23-Apr-2009 apb

Make clean_METALOG in distrib/sets early in the build, to ensure that
the METALOG does not grow without bounds on multiple MKUPDATE builds.
(Previously, sanitise_METALOG in distrib/sets/Makefile used to do
something like this near the end of a build.)


# 1.269 15-Apr-2009 tsutsui

Remove an explicit BUILDTARGETS do-compat-external-lib before do-build
because now src/compat/Makefile descends there and no particular
dependency on 32 bit compat external libs during do-build.


# 1.268 25-Feb-2009 sketch

Disable grep host tool and unbreak NetBSD build until I can come up with a
clean fix.


# 1.267 25-Feb-2009 sketch

Use awk and grep host tools where required. 'build.sh release' now works
on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).


# 1.266 19-Jan-2009 jmmv

branches: 1.266.2;
Add the top-level do-compat-external-lib target that mimics
do-external-lib so that we can build the compat libraries for
ATF. Also add compat/external/lib/Makefile following the same
example of external/lib/Makefile, which descends into the
external libraries and builds them.


# 1.265 30-Dec-2008 pooka

Build kernel modules the same time as the rest of the system libraries.


# 1.264 05-Dec-2008 cube

Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.263 09-Nov-2008 mrg

- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


# 1.262 27-Oct-2008 mrg

branches: 1.262.2;
- enable 32-bit library builds on amd64 and sparc64

- add 3 new top-level targets:
do-compat-lib-csu
do-compat-libgcc
do-compat-lib-libc
and run them before "do-build" if ${MKCOMPAT} != "no"


# 1.261 25-Oct-2008 apb

Add a do-top-obj target, which builds the top-level obj directory.
This uses the new NOSUBDIR support in bsd.subdir.mk.

Insert do-top-obj near the beginning of BUILDTARGETS. The first few
items are now:
cleandir: cleans the tree.
do-top-obj: creates the top level object directory.
do-tools-obj: creates object directories for the host toolchain.
do-tools: builds host toolchain.
obj: creates object directories.

Also improve a comment and split a long line where SUBDIR is set from
_SUBDIR.


# 1.260 22-Oct-2008 apb

Defer the "make obj" step until after tools are built and installed.

There may be commands embedded in "!=" assignments that depend on tools
being available, and previously these would have printed error messages
during "make obj". They may still print error messages during "make
cleandir", which (if it is performed at all) is performed before tools
are built.


# 1.259 16-Oct-2008 pooka

add do-sys-rump-net-lib


# 1.258 03-Oct-2008 jnemeth

PR/39687 - Henning Petersen -- comment typo


# 1.257 28-Aug-2008 lukem

Improve support for MKXORG!=no to enable builds into external/mit/xorg.
This will be mutually exclusive to MKX11!=no.


# 1.256 23-Aug-2008 gmcgarry

Build pcc and pcc-based crtstuff if using pcc compiler.


# 1.255 29-Jul-2008 pooka

Install rump libraries and utilities to the base system and remove the
private non-installed build infrastructure from sys/rump.

breakdown of commit:
* install relevant headers into /usr/include/rump
* build sys/rump/librump/rumpuser and sys/rump/librump/rumpkern
from src/lib and install as librumpuser and librump, respectively
+ this retains the ability to test a librump build with just the
kernel sources at hand
* move sys/rump/fs/lib/libukfs and sys/rump/fs/lib/libp2k to src/lib
for general consumption, they are not kernel-space dwellers anyway
* build and install sys/rump/fs/lib/lib$fs as librumpfs_$fs
* add chapter 3 manual pages for rump, rumpuser, ukfs and p2k
* build and install userspace kernel file system daemons if MKPUFFS=yes
is spexified
* retire fsconsole for now, it will make a comeback with an actually
implemented version shortly


# 1.254 28-Jul-2008 mrg

if MKXORG != no, use external/mit/xorg subdir instead of x11 subdir for
the mk-x11 target.


# 1.253 22-May-2008 lukem

Descend into external.
Add 'do-external-lib' target to build external/lib "early"


# 1.252 17-Mar-2008 lukem

branches: 1.252.2; 1.252.4;
Consistently document RELEASEDIR/RELEASEMACHINEDIR.


# 1.251 12-Nov-2007 jmmv

branches: 1.251.4;
Add the tests.tgz set

This adds a new tests.tgz set to releases which includes all the tests
for the system. It is important to note that this set does not rely on
comp.tgz: a user of the system can run the tests without having the
development tools installed, which can be useful in a production machine.


# 1.250 06-Oct-2007 pavel

Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.

(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.249 06-Sep-2007 lukem

Provide 'do-libgcc' to build gnu/lib/crtstuff${LIBGCC_EXT} (if necessary)
and then gnu/lib/libgcc${LIBGCC_EXT}.
Makes it easier to cut&paste from the list of targets built with 'make build'.


# 1.248 29-Aug-2007 jnemeth

Add an iso-image-source option which does the same thing as iso-image but
includes source sets as well. The infrastructure for this was already
there, although it needed a bug fix. Will look at adding arbitrary
directories next.


# 1.247 06-Mar-2007 bouyer

branches: 1.247.4;
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.

call iso_image in distrib/ for iso-image in the top Makefile.


# 1.246 06-Sep-2006 dbj

branches: 1.246.2;
don't filter out .WAIT when converting from _SUBDIR to SUBDIR


# 1.245 02-Jun-2006 mrg

remove support for building (with) GCC 2.95. also:
- always install <stdbool.h>
- don't generate a fake one for vax / gettext.


# 1.244 07-Apr-2006 mrg

retire HAVE_GCC3/HAVE_GCC4 and introduce HAVE_GCC that is set to 2, 3 or 4.


# 1.243 28-Jan-2006 apb

* Add an "iso-image" target in the top level Makefile,
which invokes make iso-image in the etc directory.
* Add an "iso-image" action in build.sh, which
invokes make iso-image.
* Document the above in doc/BUILDING.mdoc.
* Re-generate BUILDING.

Approved by christos


# 1.242 21-Jan-2006 dsl

Add .MAKE to all targets that use ${MAKEDIRTARGET} otherwise make closes
the job-token pipe and the sub-makes have their own '-j n' processes.
As well as giving unexpected parallelism, it makes it impossible to stop
the build promptly on errors.


# 1.241 04-Jan-2006 apb

Add a new "syspkgs" target, which simply chains to the "syspkgs" target
in distrib/sets/Makefile.

Reviewed by agc


# 1.240 24-Aug-2005 lukem

Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.239 17-Apr-2005 lukem

use usr.sbin/postinstall/postinstall instead of etc/postinstall


# 1.238 01-Jan-2005 lukem

branches: 1.238.2;
correct the comment describing the build order


# 1.237 01-Sep-2004 tacha

DO do-gnu-lib-crtstuff${LIBGCC_EXT} only when ${HAVE_GCC3} != "no",
since we don't have crtstuff subdirectory.


# 1.236 27-Aug-2004 thorpej

Switch to using GCC's supplied crtbegin / crtend files.


# 1.235 30-Jul-2004 lukem

The do-lib-libdes BUILDTARGET is unnecessary now we have the DEPLIBS
support that I added to src/lib/Makefile.inc.


# 1.234 17-May-2004 lukem

Move '${MAKEDIRTARGET} x11 distribution' from Makefile::distribution to
etc/Makefile::distribution, and only perform if ${MKX11}!=no.
Should fix a problem experienced by Alistair whilst doing a "make release".


# 1.233 16-May-2004 lukem

Perform 'make distribution' in ./x11/ as part of the distribution target.


# 1.232 13-Apr-2004 lukem

Convert lines of the form
(cd ${.CURDIR}/somedir && ${MAKE} AVAR=value atarget)
to
${MAKEDIRTARGET} somedir atarget AVAR=value
which results in a "prettier" display of these operations


# 1.231 15-Feb-2004 skrll

Be more gcc like in the way we deal with libgcc so that sh3/hppa millicode
and exception handling have a chance of working properly.

- creates libgcc, libgcc_eh and libgcc_s

- updates LIBGCC_SPEC to use them appropriately.

There's a hack in here at the moment with respect to libgcc_so in that it
is preferable to link against libgcc_so will only when -shared-libgcc is
specified (the c++ frontend does this automatically.) Configurations where
LINK_EH_SPEC is defined already do this. The gcc configuration for
NetBSD/alpha and another NetBSD platform (I forget which) actually define
LINK_EH_SPEC probably by accident rather than design.

- updates share/mk to use the compiler's knowledge of what needs linking into
libraries and executables. This removes an hppa hack.

- updates the sets for the newly created libgcc* files.

- support for linking against the _pg version of libgcc has been removed.


# 1.230 06-Feb-2004 lukem

MAKEVERBOSE support for build-docs


# 1.229 26-Jan-2004 lukem

implement params with cd etc && make params


# 1.228 26-Jan-2004 lukem

Apply the .PHONY attribute where appropriate.
Fixes [toolchain/21453] from rafal@.


# 1.227 08-Jan-2004 lukem

Implement do-x11, to run "make build" in ./x11/
If MKX11 != no, add "do-x11" to BUILDTARGETS.

Say ``hello'' to Imakeicide.


# 1.226 06-Jan-2004 lukem

rename release-info to etc-release
rename install-release-info to install-etc-release


# 1.225 04-Jan-2004 lukem

Run "cd etc && make install-release-info" at the end of the "build" target.
Based on Hubert Feyrer's suggestion on tech-userlevel@.


# 1.224 03-Jan-2004 lukem

only build do-lib-libdes if ${MKCRYPTO}!=no


# 1.223 03-Jan-2004 lukem

Consistently check ${TOOLCHAIN_MISSING} against "no".


# 1.222 05-Dec-2003 lukem

fix some comments


# 1.221 26-Jul-2003 salo

netbsd.org->NetBSD.org


# 1.220 25-Jul-2003 mrg

maybe build gnu/lib/libgcc3 instead of libgcc[2]


# 1.219 24-Jul-2003 lukem

document do-lib-libdes


# 1.218 24-Jul-2003 fvdl

Make and install libdes before the rest; libkrb needs it.
XXX there must be a better way.


# 1.217 20-Jul-2003 lukem

tweak how postinstall-fix-obsolete is made. (may fix various problem reports)


# 1.216 20-Jul-2003 lukem

redo previous (functionality rollback of 1.213) to retain the style of 1.213


# 1.215 20-Jul-2003 wiz

Undo revision 1.213 now that grotty is fixed. Tested by lukem, thanks!


# 1.214 18-Jul-2003 lukem

Add MKUNPRIVED; if not no has the same semantics as if UNPRIVED was defined.
Replace defined(UNPRIVED) tests with ${MKUNPRIVED} != "no"

Add MKUPDATE; if not no has the same semantics as if UPDATE was defined.
Replace defined(UPDATE) tests with ${MKUPDATE} != "no"

Improve documentation for these and other make flags.


# 1.213 17-Jul-2003 lukem

grotty from groff 1.19 needs -c for -b, -o or -u to work.

This is damn annoying, because it means the old method of "groff -P-bou"
won't suppress escape codes, unless -P-c is also provided.
(Mmm, quality software...)


# 1.212 17-Jul-2003 lukem

Add postinstall-fix-obsolete (to invoke "postinstall fix obsolete" -
funny that :), and call in "distribution" just before the "make checkflist".
Should minimise a bunch of the "I use make UPDATE= and checkflist failed"
errors, but not all of them.


# 1.211 10-Jul-2003 lukem

Rename a large chunk of the make(1) variables which refer to a
program/tool from "FOO" to "TOOL_FOO". The new variables are:
TOOL_ASN1_COMPILE TOOL_CAP_MKDB TOOL_CAT TOOL_CKSUM TOOL_COMPILE_ET
TOOL_CONFIG TOOL_CRUNCHGEN TOOL_CTAGS TOOL_DB TOOL_EQN TOOL_FGEN
TOOL_GENCAT TOOL_GROFF TOOL_HEXDUMP TOOL_INDXBIB TOOL_INSTALLBOOT
TOOL_INSTALL_INFO TOOL_M4 TOOL_MAKEFS TOOL_MAKEINFO TOOL_MAKEWHATIS
TOOL_MDSETIMAGE TOOL_MENUC TOOL_MKCSMAPPER TOOL_MKESDB
TOOL_MKLOCALE TOOL_MKMAGIC TOOL_MKTEMP TOOL_MSGC TOOL_MTREE
TOOL_PAX TOOL_PIC TOOL_PREPMKBOOTIMAGE TOOL_PWD_MKDB TOOL_REFER
TOOL_ROFF_ASCII TOOL_ROFF_DVI TOOL_ROFF_HTML TOOL_ROFF_PS
TOOL_ROFF_RAW TOOL_RPCGEN TOOL_SOELIM TOOL_SUNLABEL TOOL_TBL
TOOL_UUDECODE TOOL_VGRIND TOOL_ZIC

For each, provide default in <bsd.sys.mk> of the form:
TOOL_FOO?= foo
and for the ${USETOOLS}=="yes" case in <bsd.own.mk>, provide override:
TOOL_FOO= ${TOOLDIR}/bin/${_TOOL_PREFIX}foo

Document all of these in bsd.README.

This cleans up a chunk of potential (and actual) namespace collision
within our build infrastructure, as well as improves consistency in
the share/mk documentation and provision of appropriate defaults for
each of these variables.


# 1.210 07-Jul-2003 lukem

add MAKECONF to vars that "params" target shows


# 1.209 06-Jul-2003 lukem

Add "params" target, to display the value of various variables.
This is part of a broader plan to improve diagnostics & support
to end-users of build.sh.


# 1.208 04-Jul-2003 lukem

update "targets invoked by make build" to match reality ...


# 1.207 26-Jun-2003 drochner

build libgcc early, if at all


# 1.206 10-May-2003 lukem

Add "sourcesets" argument/target, which builds source sets into
RELEASEDIR/source/sets


# 1.205 18-Apr-2003 thorpej

.WAIT before distrib, since distrib may need things built earlier
in the build process.


# 1.204 16-Apr-2003 thorpej

libcrypto no longer depends on libcrypt, so there is no need to build
it early.


# 1.203 03-Apr-2003 thorpej

Fix merge botch in last.


# 1.202 03-Apr-2003 thorpej

Always build tools/compat, so that random host helper programs
can use libnbcompat, if necessary.


# 1.201 02-Apr-2003 mycroft

Link libcrypto against libcrypt to make sure crypt() is still there -- and
therefore build it earlier in the build process as well.


# 1.200 21-Feb-2003 lukem

all:
Use /var/db/obsolete instead of /etc/obsolete

etc/Makefile:
Create separate target "install-obsolete-files" to populate
/var/db/obsolete, instead of using "install-etc-files".

Makefile:
Add do-obsolete target, to run "cd etc && make install-obsolete-files",
and add this to BUILDTARGETS.
This moves the "obsolete files" creation from "distribution" to "build".


Per discussion with Andrew Brown.


# 1.199 25-Jan-2003 lukem

- Add "sets" top-level Makefile target and build.sh operation.
[Latter suggested by Julio Merino in private email]
- Add "help" build.sh operation.


# 1.198 05-Jan-2003 lukem

Rework how KERNOBJDIR functions; now it's always determined with
cd ${KERNSRCDIR}/${KERNARCHDIR}/compile && ${PRINTOBJDIR}
This is far simpler than the previous system, and more robust with
objdirs built via BSDOBJDIR.

The previous method of finding KERNOBJDIR when using BSDOBJDIR by
referencing _SRC_TOP_OBJ_ from another directory was extremely
fragile due to the depth first tree walk by <bsd.subdir.mk>, and
the caching of _SRC_TOP_OBJ_ (with MAKEOVERRIDES) which would be
empty on the *first* pass to create fresh objdirs.

This change requires adding sys/arch/*/compile/Makefile to create
the objdir in that directory, and descending into arch/*/compile
from arch/*/Makefile. Remove the now-unnecessary .keep_me files
whilst here.

Per lengthy discussion with Andrew Brown.


# 1.197 04-Jan-2003 lukem

Add an obj rule to create ${KERNOBJDIR} here, at the end of the "make obj"
pass. (etc/Makefile doesn't create this any more).


# 1.196 03-Jan-2003 lukem

Install release files under "${RELEASEDIR}/${MACHINE}/..." instead of
"${RELEASEDIR}/...".

${RELEASEDIR} is never cleaned , and ${RELEASEDIR}/${MACHINE} is only
cleaned if UPDATE is not defined.


# 1.195 02-Jan-2003 atatat

The obj target for src/etc is invoked too early for it to function
properly in a clean tree (bsd.subdir.mk makes the obj target in
.CURDIR depend on the recursive targets). If "make obj" is invoked a
second time, the problem will correct itself. To work around this:

(1) Before including bsd.subdir.mk, create a target called "obj-etc"
so that the "regular" one (from bsd.subdir.mk) won't be instantiated.

(2) After including bsd.obj.mk, create a "real" obj-etc target that
does the required work with .USE as a "source" so that we can merely
cons it onto the actual obj target. Note that this is only done if
the obj target has commands (ie, NOOBJ was not set and MKOBJ was not
no and whatever else you might have come up with) and we would have
recursed into etc anyway (etc is in the SUBDIR list).

This makes the obj target in src/etc get invoked *after* the obj
target in the root of the source tree so that KERNOBJDIR will have the
correct value.

Reviewed by lukem.


# 1.194 26-Dec-2002 lukem

fix DESTDIR checks if !defined(DESTDIR)


# 1.193 21-Dec-2002 lukem

* Add two new (experimental) targets:

buildworld Builds a distribution into DESTDIR as per
"make distribution", except that DESTDIR
*must* be defined and *must not* be "" or "/".

installworld Copies (using distrib/sets/maketars -i ...) from
${DESTDIR} to ${INSTALLWORLDDIR} (defaults == `/'),
and then runs "postinstall-check" against
${INSTALLWORLDDIR}.
If ${INSTALLWORLDDIR} == "/", ensure that
`uname -s` == "NetBSD" and `uname -m` == ${MACHINE},
to prevent nasty accidents...

* Tweak some comments


# 1.192 02-Dec-2002 lukem

improve previous; show times at end of distribution/release/snapshot as well


# 1.191 02-Dec-2002 lukem

show the start time at the end of the build as well.
inspired by [misc/18173] from Julio Merino.


# 1.190 29-Nov-2002 lukem

Add do-{target} aliases for: cleandir obj includes
to be consistent with the other do-TARGET targets for make build.
(These are not used by "make build" per se, they're just to make my
life easier)


# 1.189 12-Nov-2002 itohy

MKDYNAMICROOT for a.out


# 1.188 21-Sep-2002 lukem

move BUILDING.mdoc -> doc/BUILDING.mdoc


# 1.187 17-Sep-2002 thorpej

* Eliminate the USE_NEW_TOOLCHAIN variable. Instead, split it into
two variables:

TOOLCHAIN_MISSING -- set to "yes" on platforms for which there is
no working in-tree toolchain (hppa, ns32k, sh5, x86_64).

EXTERNAL_TOOLCHAIN -- if defined by the user, points to the root of
an external toolchain (e.g. /usr/local/gnu). This enables the cross-build
framework even for TOOLCHAIN_MISSING platforms.

If TOOLCHAIN_MISSING is set to "yes", MKGDB, MKBFD, and MKGCC are all
unconditionally set to "no", since the bits are not there to build.

If EXTERNAL_TOOLCHAIN is set, MKGCC is unconditionally set to "no",
since the external toolchain's compiler is not in-sync with the
in-tree compiler support components (e.g. libgcc).

* Set MACHINE_CPU much earlier in bsd.own.mk, so that more tests in
that file can use it.


# 1.186 13-Sep-2002 thorpej

Add a do-lib-libc target which is processed after do-lib-csu. This
ensures that the results of the libc build are available to other
lib builds (notably, llib-lc.ln).


# 1.185 30-Aug-2002 lukem

print date when make {distribution,release,snapshot} finished


# 1.184 25-Aug-2002 lukem

add "do-ld.elf_so" target, which builds & installs libexec/ld.elf_so.
call after do-gnu-lib but before do-build.


# 1.183 21-Aug-2002 lukem

descend into "rescue"


# 1.182 10-Jul-2002 uwe

Fix botch in previous. Actually do "build" for "distribution".


# 1.181 10-Jul-2002 thorpej

After running the body of the "distribution" target, do a "checkflist", so
that people doing fresh builds into NFS root areas will know if their builds
are incomplete.


# 1.180 25-Jun-2002 drochner

find the Makefile for postinstall-check in the presence of ${.OBJDIR}s


# 1.179 25-Jun-2002 thorpej

Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.


# 1.178 20-Jun-2002 enami

Fix whitespace usage in comment.


# 1.177 20-Jun-2002 enami

Change directory to .CURDIR before invoking ${MAKE}.


# 1.176 18-Jun-2002 lukem

In afterinstall, only run postinstall check if DESTDIR == / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


# 1.175 06-May-2002 lukem

branches: 1.175.2;
Change -s srcdir and -d destdir so that they don't contain the "/etc" portion.
srcdir now defaults to /usr/src (from /usr/src/etc).
destdir now defaults to / (from /etc).


# 1.174 03-May-2002 lukem

Move the METALOG from ${_SRC_TOP_OBJ_} to ${DESTDIR}.

There were too many synchronisation problems with using the former;
including situations such as a "make clean" performed between two
installs to the same DESTDIR would result in a truncated METALOG and
the resultant sets would be missing stuff such as include files that
don't get reinstalled if they haven't changed, even with !UPDATE.


# 1.173 02-May-2002 sommerfeld

Correct BUGS in BUILDING.mdoc now that most ports are USE_NEW_TOOLCHAIN

Obsolete NBUILDJOBS; build.sh just passes -jN through to make(1),
which inherits it cooperatively through the build tree. Fix
documentation so that it's shown to be deprecated.

If you use build -jN, please save full build logs so that errors due
to missing dependancies can be analyzed and corrected.


# 1.172 01-May-2002 bjh21

Use printf rather than echo -n, since the former works on all POSIX systems.


# 1.171 29-Apr-2002 lukem

we might as well provide a handy "postinstall-fix" target whilst here


# 1.170 29-Apr-2002 lukem

move postinstall from afterinstall to separate "postinstall-check" target.
requested by Matthias Scheler <tron@zhadum.de>.


# 1.169 27-Apr-2002 lukem

run "./etc/postinstall check" in afterinstall:


# 1.168 11-Apr-2002 tv

Revert previous so crtbeginS and crtendS are available.


# 1.167 11-Apr-2002 tv

We don't need to do "install" of lib/csu specially. Just install it with
the rest of lib.

(None of lib/* needs csu installed in order to link. In the USETOOLS!=yes
case, csu may even depend on a newer libc, so installing csu before
compiling host tools in lib/ could break things even worse.)


# 1.166 11-Mar-2002 simonb

Split the _SUBDIR assignment into two assignments so you can do things
like "grep ^_SUBDIR Makefile".


# 1.165 05-Mar-2002 pk

Build whatis.db and infodir-meta from the commands list of the afterinstall
target. Remember: inserting `dummy' targets is not equivalent of some
convenient macro expansion; it has side effects!


# 1.164 28-Feb-2002 jmc

Restructure infodir-meta to call a proper submake. Put the code into the
install-info gnu subdir as it's the program updating the dir file. This
all has to happen because METALOG depends on _SRC_TOP_OBJ which is now
not defined in the top level Makefile per tv's last commit. Which is fine
as this rule should have gone into a program's Makefile anyways just like
the whatis.db one does.


# 1.163 27-Feb-2002 tv

If _SRC_TOP_OBJ_ gets set here, we will end up with a directory that may
not be the top level objdir, because "make obj" can happen in the *middle*
of "make build" (long after <bsd.own.mk> is calculated it). So, pre-set
_SRC_TOP_OBJ_ here so it will not be added to ${.MAKEOVERRIDES}.


# 1.162 14-Feb-2002 tv

Bomb if NBUILDJOBS is set, as it is badly broken in some way (as described
in toolchain/14837). This is the root of some problems thought to be of
different causes by users who forget to say that they are using
"build.sh -j"....


# 1.161 08-Feb-2002 lukem

remove METALOG in clean


# 1.160 25-Nov-2001 thorpej

Add a wrapper for the "distribution" target, similar to the wrapper
for the "release" target.


# 1.159 24-Nov-2001 perry

Add a new target (infodir-meta:) that synthesizes the share/info/dir
file's metadata if UNPRIVED and MKINFO != no. Make afterinstall depend
on it as well as whatis.db.
XXX I wish there was a more rational place to synthesize the metadata,
but I can't think of one. The share/info/dir file is built by all the
world's install-info executions.


# 1.158 19-Nov-2001 tv

No, really revert previous. Recursing to etc works, and I'm in the middle
of fixing distrib right now. If something's broken, please report it via
the proper channels.


# 1.157 20-Nov-2001 thorpej

No, really take etc and distrib out of the default subdir
list. We've waited too long for the null target sweep.


# 1.156 15-Nov-2001 tv

Warn when "make build" is started with USE_NEW_TOOLCHAIN on a platform for
which USE_NEW_TOOLCHAIN is not verified to work [is not on by default].


# 1.155 12-Nov-2001 tv

Reverse the order of "make cleandir" and "make obj" back to the way they
were historically. Discrepancy noted by atatat.


# 1.154 13-Nov-2001 tv

Rather than build in `tools' and `lib' twice, build `tools' and `lib'
completely and install them, then skip recursing into those directories
on the final dependall/install.


# 1.153 12-Nov-2001 tv

The top level has an objdir now, so make sure to cd to ${.CURDIR} when
recursing in-place.


# 1.152 12-Nov-2001 tv

Major overhaul of src/tools and host toolchain. Summary of changes:

* Rewrite src/tools Make logic to work like the rest of the tree wrt
"dependall" and "install". The old "make build" hack is gone.

* Remove the MKTOOLS logic. This was linked to the "make build" hack,
and was only needed because TOOLDIR originally had no writable default.

* Redo the GNU configure/make logic to make it fit reasonably in a
BSD make wrapper. Use new ${.ALLTARGETS} variable to scan for
targets in $(srcdir), and mark them with .MADE: to prevent rebuilding.

* Only build cross tools in src/tools; remove some messy logic in
src/usr.* and src/gnu/usr.* that would do target filename rewriting
(improves consistency and readability).

* Add the ability to build cross gdb at tool build time by setting
MKCROSSGDB (default no) to "yes" in mk.conf.

* Add src/tools/groff and set up paths to work with this cross groff.


# 1.151 11-Nov-2001 tv

Create an objdir here for storage of timestamps, build-wide data, and so
forth.


# 1.150 01-Nov-2001 tv

By popular demand, one preformatted version of BUILDING, plaintext, no CRs.


# 1.149 01-Nov-2001 tv

Revert previous. <bsd.own.mk> already defaults MKOBJDIRS to "no". Also
clean up the evaluation of ${MKOBJDIRS} later -- no need for :Uno.


# 1.148 01-Nov-2001 jmc

Add back original behavior of MKOBJDIRS defaulting to "no" so it doesn't
force people to set yet another variable to get the expected behavior


# 1.147 31-Oct-2001 jmc

Add back logic which forces DESTDIR=/ for the distrib-dirs rule if it's not set
or it's blank. The new toolchain rules set it to blank which can run into
the sanity checks in etc/Makefile


# 1.146 30-Oct-2001 tv

* Always descend into "tools" regardless of USETOOLS setting. Instead,
just don't build the tools if USETOOLS!=yes. This permits objdirs to
be created even when USETOOLS=no.

* Clean up use of "-m" by specifying it to .MAKEFLAGS: if needed.


# 1.145 29-Oct-2001 tv

Work around parallelism lossage, because .ORDER doesn't work yet
(noted in PR bin/14404). This will be fixed back to using .ORDER later.


# 1.144 29-Oct-2001 tv

Add rules for generating plaintext and HTML versions of the "BUILDING"
document automatically (to be checked in when BUILDING.mdoc is changed).


# 1.143 23-Oct-2001 tv

Re-add intermediate dependall/install targets (do-lib-csu, do-lib,
do-gnu-lib) to permit restarting broken builds in the middle.


# 1.142 23-Oct-2001 tv

Add shortcut rules to avoid going into distrib on unneeded (and in some
cases, currently broken) targets.


# 1.141 23-Oct-2001 tv

Revert previous. etc and distrib do now belong in _SUBDIR; the correct fix
for broken builds is to fix the relevant Makefiles as was done for sparc.
This was done in the interest of simplicity of the system build (and the
fact that there may be a need to descend into these directories in the
near future).


# 1.140 21-Oct-2001 jmc

Remove distrib and etc from _SUBDIR. These should never get added to the
subdir list as anything building into them will access them directly (ala
the make release rule or the mtree rule). There were good reasons for
controlling this at the top level before and those should remain in place.

On cleandir and obj builds these should get run through but that's it for
the "normal" rule sets. (This was breaking the builds as make includes doesn't
function inside of distrib for instance).


# 1.139 19-Oct-2001 tv

Add a couple more shortcut rules for the "tools" subdir to prevent recursion.


# 1.138 18-Oct-2001 tv

Change
${USETOOLS} != "no"
to
${USETOOLS} == "yes"
to allow USETOOLS to be tri-state: "yes", "no", or "never". The use of
these options will be documented in src/BUILDING.


# 1.137 18-Oct-2001 tv

Overhaul and simplify the top level Makefile, and add some sanity checking.

- "make build" cannot be invoked from the command line at the same time as
any standard recursive target except "obj" and "cleandir", as things like
"make all release" can lead to unexpected results.

- Put everything in SUBDIR, and auto-weed missing directories. This allows
the standard targets to work as expected (including in tools, etc, and
distrib).

- Leverage .for loops to simplify the prerequisite dependall/install phase
of compile-time dependencies (lib/csu, lib, gnu/lib). These are now all
distilled into one component rule ("do-build").

- Use the actual targets of obj, cleandir, and includes; no need for double
indirection goop in this case.

- GC all the deprecated "domestic" cruft. We are officially using (and
fixing, where appropriate) the cryptosystem integrated into src/crypto.

- Collapse the whatis.db build rule into a dependency of "afterinstall",
and nuke the "_BUILD" cruft.


# 1.136 12-Oct-2001 nathanw

Use @true instead of @${TRUE} in includes-foo targets, since there is no
variable TRUE defined in our makefile system.

This prevents "make includes" from breaking with older bsd.subdir.mk, and is
more consistent with the uses of "true" in the rest of the tree.


# 1.135 10-Oct-2001 jwise

Do not descend into `tools' on make clean{dir,} if USETOOLS=no, as doing
so without TOOLDIR set will blow up.


# 1.134 08-Oct-2001 tv

Add "tools" to the list of subdirs for an explicit "make obj" or
"make cleandir". Fixes PR bin/14177.

"make build"'s logic and the conventional <bsd.subdir.mk> logic probably
need to be split apart here at some point to prevent these kinds of things
from causing odd problems in the future....


# 1.133 04-Oct-2001 tv

Use ${.CURDIR}/share/mk to include bsd.own.mk and bsd.subdir.mk into this
file in order to get proper definitions for a build. (Temporary; this
Makefile will be moved to a new name and replaced with a bootstrap Makefile
in the near future.)


# 1.132 01-Oct-2001 mason

UPDATING (1.38) says:

i386 platform builds must now set TOOLDIR in mk.conf or the
environment in order to build the system. This is a pathname
where host build tools will be installed, and must NOT be
the same as src/tools.

(Optionally, USETOOLS=no can be set in the environment if you
wish to avoid using the separate host toolchain for building a
subtree. Otherwise, this will default to "yes" automatically.)

However, building with USETOOLS=no set and no defined TOOLDIR ends up
with breakage, as the do-make-tools target is run regardless of whether
or not USETOOLS is set.

Hence, a wrapper around the body of the do-make-tools target:

.if ${USETOOLS} != "no"
...
.endif

...which makes the build work when USETOOLS=no, with no TOOLDIR set. This
would seem to more accurately match the description put forth in UPDATING.


# 1.131 22-Sep-2001 tv

Put do-make-tools before creating distrib-dirs (as binstall has to be
available before making distrib-dirs).


# 1.130 21-Sep-2001 tv

Always use src/share/mk as the source of the system .mk files for a build.


# 1.129 21-Sep-2001 tv

- Remove the include of Makefile.tools; this will be done elsewhere.
- Skip the "includes" phase of bin, games, libexec, regress, sbin, and usr.sbin.


# 1.128 17-Aug-2001 thorpej

Make sure DESTDIR is always set when calling the distrib-dirs target.
In the new build world order, DESTDIR is set to "" (in Makefile.tools)
if not already set, to ensure correct include/library handling. This
caused the top-level to not set DESTDIR=/, which confused distrib-dirs,
since it doesn't include Makefile.tools, and thus didn't see the same
DESTDIR that the top-level did.


# 1.127 14-Aug-2001 tv

The final step -- hook src/tools into the main build. If USE_NEW_TOOLCHAIN is
set, will descend into "tools" to build a toolchain, and use that toolchain
explicitly for the build (via tools/Makefile.tools).

While here, GC all the "egcs-detection" logic; it's not needed anymore, since
nothing is on gcc 2.7 any longer.


# 1.126 02-Aug-2001 enami

Wrap a long line.


# 1.125 10-Jun-2001 mrg

clarify some variable documentation; from cagney


# 1.124 10-Jun-2001 mrg

make previous work with -j. idea from cagney


# 1.123 10-Jun-2001 mrg

fix PR#12832: split `make build' up into these steps (from new the
comments in src/Makefile):

# Sub targets of `make build,' in order:
# buildstartmsg: displays the start time of the build.
# beforeinstall: creates the distribution directories.
# do-force-domestic: check's that FORCE_DOMESTIC isn't set (deprecated.)
# do-share-mk: installs /usr/share/mk files.
# do-cleandir: clean's the tree.
# do-make-obj: create's object directories if required.
# do-check-egcs: check's that we have a modern enough compiler (deprecated.)
# do-make-includes: install include files.
# do-lib-csu: build & install startup object files.
# do-lib: build & install system libraries.
# do-gnu-lib: build & install gnu system libraries.
# do-dependall: builds & install the entire system.
# do-domestic: build & install the domestic tree (deprecated.)
# do-whatisdb: build & install the `whatis.db' man database.
# buildendmsg: displays the end time of the build.



this is something i've wanted to do for years....


# 1.122 07-May-2001 sommerfeld

parallelize the obj pass, too


# 1.121 07-Oct-2000 deberg

if building w/o a DESTDIR, grab the system make files from the source
tree until they've been installed.


# 1.120 19-Aug-2000 fredb

Descend into distrib on "make cleandir", too. This will let "make build"
with "MKOBJDIRS" set do the right thing in distrib.


# 1.119 05-Aug-2000 toddpw

Document the cool NOCLEANDIR/NOINCLUDES options that somebody added.


# 1.118 20-Jun-2000 thorpej

branches: 1.118.2;
Merge a bunch of things from crypto-us and crypto-intl into basesrc,
adding support for Heimdal/KTH Kerberos where easy to do so. Eliminate
bsd.crypto.mk.

There is still a bunch more work to do, but crypto is now more-or-less
fully merged into the base NetBSD distribution.


# 1.117 21-May-2000 mrg

branches: 1.117.2;
remove two of the previous ${_M}; they were invoked before $DESTDIR/share/mk may have existed. add one more.


# 1.116 18-May-2000 thorpej

Add ${_M} where it was missing in a few places.


# 1.115 08-May-2000 thorpej

HAVE_GCC28 -> HAVE_EGCS, and make it match gcc 2.9, as well.


# 1.114 06-May-2000 sjg

if MAKEOBJDIRPREFIX defined, include etc in make obj


# 1.113 11-Apr-2000 mrg

use MKSHARE=no instead.


# 1.112 10-Apr-2000 mrg

fix long standing bug in `make build' with $DESTDIR:
- during `make build' after /usr/share/mk has been installed, call
make with `-m $DESTDIR/usr/share/mk'.


# 1.111 08-Apr-2000 simonb

At least one crypto-intl lib has an info file(s) - add MKINFO=no to the
early build of ../src/lib ala ../src/gnu/lib.


# 1.110 10-Mar-2000 jlam

Handle new make variable BUILD_DONE which creates an empty build target if
it is set.


# 1.109 07-Mar-2000 cjs

When you type `make obj', make obj dirs in distrib whether or not you
have MKOBJDIRS variable set.


# 1.108 29-Feb-2000 erh

Add a buildmsg target for build to depend upon instead of using an ifmake block. "make snapshot" now echos the start of build time.


# 1.107 25-Feb-2000 mycroft

share/tmac is now installed by `make includes', so don't do it again.


# 1.106 18-Feb-2000 aidan

Make 'make build' hook into crypto-tree for crypto specific build-time
dependencies.


# 1.105 31-Jan-2000 assar

make sure include and include/sys are populated before starting to
make includes in lib


# 1.104 05-Dec-1999 simonb

After ${MAKE} obj, explicitly make obj dirs in ${.CURDIR}/distrib as well.


# 1.103 03-Dec-1999 simonb

Revert previous but move "cd share/tmac" later down so that any
generated files will go in obj dirs if they are created. After
discussion with the two Bill's on tech-userlevel.


# 1.102 03-Dec-1999 simonb

Move the "${MAKE} obj" above the share/tmac stage so that the generated
files in that directory don't pollute the source tree before the obj
dirs are created.


# 1.101 29-Nov-1999 sommerfeld

Document MKOBJDIRS here, and sort the variable list in the comments
into alphabetical order.


# 1.100 30-Nov-1999 sommerfeld

Add MKOBJDIRS make variable to bsd.own.mk, defaulting to "no" but
overrideable in mk.conf

Document in bsd.README; this is distinct from "MKOBJ", which controls
whether "make obj" does anything.

In the top-level makefile, if MKOBJDIRS != "no", do a "make obj" at an
appropriate point during a "make build".


# 1.99 13-Sep-1999 perry

branches: 1.99.4;
use new dependall target instead of depend then all in make build


# 1.98 12-Jul-1999 thorpej

Remove all of the domestic/crypto-us glue from this file. It is handled
differently now.


# 1.97 27-May-1999 christos

Handle crypto-us just like domestic


# 1.96 25-Apr-1999 scottr

Add the FORCE_DOMESTIC flag to force the 'all', 'includes',
and 'install' targets to descend into the domestic subtree. This is
generally a bad idea unless one knows precisely what they're doing,
but we'll provide the rope anyway (with the appropriate warnings).

Document both EXPORTABLE_SYSTEM and FORCE_DOMESTIC at the top of the file.


# 1.95 31-Mar-1999 cjs

branches: 1.95.2;
Improve documentation.


# 1.94 10-Mar-1999 scottr

Make a note of a subtle lossage mode pointed out by Mycroft.


# 1.93 10-Mar-1999 scottr

Make the includes and install targets consistent, and shove the
ugly hack into the etc/Makefile distribution target instead of
the top-level build target. Problem noted by Mycroft.


# 1.92 20-Feb-1999 scottr

Back out rev 1.90: The need for texinfo is a one-shot event. This was
announced in a reasonable forum. Further, it adds significant overhead to
the build process, and doesn't work correctly when a non-root DESTDIR
build is attempted (unless texinfo is already available, which of course
makes this change unnecessary).


# 1.91 19-Feb-1999 scottr

make -> ${MAKE}


# 1.90 18-Feb-1999 mellon

Build and install texinfo before building and installing the world.


# 1.89 17-Feb-1999 mellon

Don't try to run makeinfo when doing preliminary GNU library builds.


# 1.88 17-Feb-1999 scottr

Revert 1.83; it doesn't work. A different fix for his problem is in
the pipeline.


# 1.87 15-Feb-1999 cjs

Add release and snapshot targets. (They do the same thing.)


# 1.86 12-Feb-1999 lukem

convert from NOxxx= to MKxxx=no.
include <bsd.own.mk> if testing a MKxxx variable.


# 1.85 10-Feb-1999 tv

Back out the info dir changes; /usr/share/info was not in pkgsrc's info
path, which confused me to no end.


# 1.84 11-Feb-1999 tv

If updating from a system which has a /usr/pkg/info/dir, move that to
/usr/share/info/dir and make a symlink in /usr/pkg/info. This allows
systems with the gtexinfo pkg installed to work "properly".


# 1.83 09-Feb-1999 christos

Build the domestic libraries first, before building programs. Unfortunately
some programs like /usr/libexec/ftpd, need the kerberos etc libraries.
XXX: In reality programs like these should be moved to the domestic tree!
I would have assumed that if I make install in the exportable tree, I will
not install any domestic binaries!!!


# 1.82 28-Jan-1999 scottr

Once more, from the beginning: we really, really don't want to descend into
the domestic tree if we are building an EXPORTABLE_SYSTEM.

Translate the conditional to English so as to avoid future problems
when people are tempted to modify it.


# 1.81 28-Jan-1999 scottr

If doing a "domestic" build, make sure whatis.db is built _after_ the
domestic tree.


# 1.80 24-Jan-1999 scottr

Sigh. The last change was too clever. Instead of using EXPORTABLE_SYSTEM,
which has side effects, use _BUILD to determine whether we ought to
install things in the domestic subtree. Otherwise, the core idea from
the last revision is unchanged.


# 1.79 24-Jan-1999 scottr

When I split the build target into the top-level and "domestic" pieces, I
failed to account for how a 'make distribution' would get the proper bits
into the distribution tree. To correct this, we set EXPORTABLE_SYSTEM
while doing a 'make build' in order to avoid trying to install not-yet-
generated headers and binaries. I've also made the required adjustment
to the condition that adds "domestic" to SUBDIR.

This is too hairy and needs to die, but I don't see how it can until
we integrate the crypto bits into the main body of the tree.


# 1.78 05-Jan-1999 scottr

Don't build domestic bits directly; use the domestic 'build' target
to do them for us.


# 1.77 03-Jan-1999 cjs

Even if EXPORTABLE_SYSTEM is defined, descend into domestic for targets
obj, clean, cleandir and distclean. This reduces the chance of problems
(and the need to re-run make obj) if one is switching back and forth
between EXPORTABLE_SYSTEM and not, as US/Canadian developers tend to do.


# 1.76 22-Dec-1998 bouyer

Add a 'NBUILDJOBS' variable which control the number of jobs started in
parallel for a 'make build' (using make's -j flag). Only CPU-intensive jobs
are started in parallel.
Document the variables useable at the begining of the makefile
(NBUILDJOBS NOMAN NOSHARE UPDATE DESTDIR). Feel free to add documentation
for the ones I forgot !


# 1.75 12-Dec-1998 tv

GC old gcc 2.7.2.2.


# 1.74 06-Dec-1998 simonb

Let make do the NOMAN= variable assignments instead of the shell so us
csh/tcsh weenies can cut and paste "make -n build" lines.


# 1.73 02-Dec-1998 thorpej

It is no longer necessary to run ldconfig in the build: target. It is
handled by bsd.lib.mk.


# 1.72 18-Oct-1998 thorpej

Only ldconfig if it's there (ELF systems don't use ldconfig).


# 1.71 15-Oct-1998 mycroft

Do not build libgcc 3 times.
Instead:
* If upgrading the compiler, build it *first*, before anything else.
* If upgrading the compiler and DESTDIR is set, barf.
This guarantees that libgcc is built during the library stage.


# 1.70 14-Oct-1998 mycroft

When doing a `make build' without DESTDIR, run ldconfig(8) after updating the
libraries.


# 1.69 06-Oct-1998 tv

Fix libgcc on alpha; shouldn't build 2.7 libgcc when bootstrapping.


# 1.68 29-Sep-1998 lukem

don't install in /usr/share if NOSHARE is defined


# 1.67 27-Sep-1998 christos

Test gcc2.8 and egcs properly


# 1.66 27-Aug-1998 tv

No need to shield alpha from gcc 2.7 libgcc any longer. Default is egcs.


# 1.65 22-Aug-1998 tv

Only build the egcs libgcc if the current ${CXX} is actually egcs.


# 1.64 22-Aug-1998 tv

Re-enable libgcc from egcs and RE-ADD the warning & libgcc rebuild at the
end of the build - it is needed for gcc 2.7->egcs bootstraps!


# 1.63 16-Aug-1998 tv

Turn off the egcs bits while the 1.1 import is taking place.


# 1.62 28-Jul-1998 thorpej

Don't try and build non-EGCS libgcc on Alpha and PowerPC.


# 1.61 26-Jul-1998 mycroft

During the initial library pass, do not install man pages.
Also, GC the weird egcs stuff in here.


# 1.60 25-Jul-1998 mycroft

Do not blow away my egcs libgcc at the beginning of a build.


# 1.59 23-Jul-1998 tv

Fix flawed logic: I'm not all here today. (.if's werten't doing what the
commit comment said they would do.


# 1.58 23-Jul-1998 tv

Fix the rebuild of libgcc:
- If USE_EGCS is set, rebuild egcs's libgcc and install it
(unless DESTDIR is set and system compiler is not gcc 2.8,
in which case print a warning message and do nothing).
- Do not rebuild gcc 2.7's libgcc. egcs can build this fine.


# 1.57 21-Jul-1998 perry

build libgcc during make build; also, don't build lex and yacc first any more.


# 1.56 27-May-1998 scottr

Revert 1.44 and associated changes; you can't prebuild anything without
includes, which is the case if you are building to an empty $DESTDIR.
Fixes PR 5497.

NOTE: This reverts us to the 1.3 behavior of requiring the secr
set to be installed for non-exportable builds. While unfortunate,
this allows a user to start with existing binary sets, rather than
requiring special knowledge of how to build a domestic tree to
$DESTDIR.


# 1.55 21-May-1998 tv

Move (re)build of libgcc to end of build list (after gcc/egcs would be
installed/updated).


# 1.54 20-May-1998 thorpej

Gack, don't try to build libgcc if it wouldn't be appropriate.


# 1.53 11-May-1998 thorpej

Build the appropriate libgcc, so that build-to-destdir works.


# 1.52 10-May-1998 mycroft

Make sure system includes are installed before descending into gnu.


# 1.51 15-Apr-1998 tv

Do the cleandir before the includes, so rpcgen doesn't build includes
twice. (Should build and install rpcgen before the includes, but it's not
too clear whether to do this before or after the cleandir.)


# 1.50 19-Feb-1998 mellon

Print date after build completes as well as before. Previous code failed because make build depends on beforeinstall but not afterinstall.


# 1.49 16-Feb-1998 lukem

fix make build for non-usa domestic a better way


# 1.48 16-Feb-1998 lukem

don't assume domestic/usr.bin/compile_et exists for make build (eg: the user has a non-USA domestic subtree)


# 1.47 14-Feb-1998 thorpej

In the build targer, make sure the troff macros are installed before
attempting to build manual pages.


# 1.46 09-Feb-1998 thorpej

Domestic library build fix: libtelnet depends on libdes and libkrb. libkrb
depends on libcom_err. So, build libdes, libcom_err, libkrb in that
order before building domestic/lib. (Geez, this stuff is a mess.)


# 1.45 06-Feb-1998 perry

add date printout at beginning and end of 'make build's


# 1.44 30-Jan-1998 mellon

Prebuild some things that the build depends on *before* they are needed so that fresh builds don't die prematurely


# 1.43 27-Oct-1997 thorpej

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


# 1.42 31-May-1997 cjs

branches: 1.42.2;
Back out BUILDDIR and NOINSTALL changes.


# 1.41 29-May-1997 cjs

Add a cleandir to make build, to make it more like it was before.


# 1.40 25-May-1997 cjs

These updates to the build allow building against include files
and libs in the object tree, if you use a separate object tree,
while maintaining backward compatability with other build methods.
See the notes in src/share/mk/bsd.README for full details. Note
that the `make includes' target now only installs the include files
in the build directory (if you use one--otherwise they go in DESTDIR
just like before); `make install' will install include files in
DESTDIR.


# 1.39 24-Mar-1997 christos

Don't cleandir on make build when UPDATE is set.


# 1.38 10-Mar-1997 cgd

when doing 'make build', build lib/csu & install it before building
lib itself. On the Alpha (and other ELF systems), shared library builds
require files built/installed by the csu build, so if lib/csu isn't
built/installed before lib is, DESTDIR builds won't work and normal builds
can mistakenly use old versions of some csu files.


# 1.37 26-Nov-1996 cjs

All of domestic/lib now builds without errors, so we build it all.


# 1.36 10-Aug-1996 explorer

allow builds to work if directory games is missing. Closes pr misc/1921 and
misc/2294


# 1.35 24-Apr-1996 jtc

Headers in src/domestic/include are now installed by the includes target


# 1.34 24-Apr-1996 jtc

Headers in src/include are now installed by the includes target


# 1.33 24-Apr-1996 jtc

Added "${MAKE} includes" to build target


# 1.32 13-Apr-1996 cgd

pull in bsd.own.mk earlier, to get configuration variables.
if people define EXPORTABLE_SYSTEM, they REALLY don't want to do stuff
in 'domestic'. Pay attention to it when doing 'make build'.
in 'make build', install share/mk _first_, because include dirs may
require new make templates.
in 'make build', install domestic includes after normal includes, so
they can previously-installed includes if necessary.
Note that all of domestic/lib should be built in 'make build' during the
library build stage.


# 1.31 18-Mar-1996 tls

behaviour of 'make build' should not change if DESTDIR is set; this is an artifact of an ancient mistake of mine.


# 1.30 18-Mar-1996 tls

a futile nod to ease-of-upgrade: make build now installs new rules from share/mk.


# 1.29 18-Mar-1996 tls

removed obsolete src/kerberosIV reference, albeit commented out


# 1.28 15-Dec-1995 jtc

fix typo


# 1.27 09-Dec-1995 tls

libcrypt has moved


# 1.26 09-Dec-1995 tls

get krb4 includes installed, do distrib-dirs if DESTDIR not set


# 1.25 08-Oct-1995 thorpej

New-style RCS id.


# 1.24 07-Oct-1995 pk

Comment out last change as it interferes with distribution building.


# 1.23 06-Oct-1995 tls

stick distrib-dirs in beforeinstall -- should be cleaner?


# 1.22 25-Feb-1995 cgd

work in the face of a /usr/src/obj directory


# 1.21 19-Feb-1995 cgd

add 'domestic' to subdirs list, if it exists.


# 1.20 22-Dec-1994 cgd

explicitly pull in bsd.own.mk, so that it's there for afterinstall.


# 1.19 13-Jun-1994 cgd

if not installing man pages, don't remake whatis db


# 1.18 10-Feb-1994 cgd

light style cleanup


# 1.17 09-Feb-1994 cgd

don't use 'make' explicitly


# 1.16 08-Feb-1994 cgd

kill typo


# 1.15 06-Feb-1994 cgd

add some new targets to DTRT when installing/building


# 1.14 07-Dec-1993 cgd

do "lib" first. otherwise you can be *really* screwed by a 'make install'
on a system with shared libraries...


# 1.13 07-Jul-1993 brezak

Make regress only if directory exists. It can be optional.


# 1.12 04-Jul-1993 cgd

allow toplevel makefile to descend into sys


# 1.11 22-May-1993 cgd

change from rcs "Header" to "Id"


# 1.10 22-May-1993 cgd

oops, clean that up a bit


# 1.9 22-May-1993 cgd

add regress, but not for install. also, add "regress" target


# 1.8 29-Apr-1993 cgd

put all of the gnu stuff in one place


# 1.7 29-Apr-1993 cgd

added gnulibexec gnugames


# 1.6 10-Apr-1993 cgd

added `usr.gnubin' for new gnu binaries necessary for the distribution.


# 1.5 07-Apr-1993 cgd

added gnulib, for gnu libraries that for whatever reason need to go
into the main tree


# 1.4 22-Mar-1993 cgd

change "Id" to "Header" in rcsid, and noted why etc was not in subdirs


# 1.3 22-Mar-1993 cgd

added rcs ids to all files


# 1.2 21-Mar-1993 cgd

after 0.2.2 "stable" patches applied


# 1.1 21-Mar-1993 cgd

branches: 1.1.1;
Initial revision


# 1.1.1.1 21-Mar-1993 cgd

initial import of 386bsd-0.1 sources


# 1.42.2.3 19-Feb-1998 mellon

Pull up 1.45-1.50: make build fails!


# 1.42.2.2 06-Feb-1998 mellon

Pull up 1.44 (mellon) and 1.45 (perry)


# 1.42.2.1 27-Oct-1997 thorpej

Pull up from trunk:

Make the "build" target depend on "beforeinstall", ensuring that all
directories have been created for the installation of the include files.


# 1.95.2.2 08-Sep-2000 he

Apply patch (requested by he):
Back out ``TARGETS+= release'' part of last change; the rest of
the tree is not ready for this change.


# 1.95.2.1 26-Aug-2000 he

Pull up revisions 1.109 and 1.120 (via patch, requested by fredb):
Make it easier on release builders -- descend into "distrib"
directory whenever "obj" or "cleandir" targets are invoked.


# 1.99.4.1 27-Dec-1999 wrstuden

Pull up to last week's -current.


# 1.117.2.1 22-Jun-2000 minoura

Sync w/ netbsd-1-5-base.


# 1.118.2.2 23-Aug-2000 fredb

Pull up 1.119->1.120: Descend into "distrib" on cleandir, too, so that
setting MKOBJDIRS does the right thing in "distrib". Approved by jhawk
and thorpej.


# 1.118.2.1 20-Jun-2000 fredb

file Makefile was added on branch netbsd-1-5 on 2000-08-24 02:19:59 +0000


# 1.175.2.3 30-Nov-2002 he

Pull up revision 1.186 (via patch, requested by thorpej in ticket #813):
Add a do-lib-libc target which is processed after do-lib-csu.
This ensures that the results of the libc build are available
to other lib builds (notably, llib-lc.ln).


# 1.175.2.2 14-Nov-2002 lukem

Pull up revisions 1.177 - 1.180
1.177:
Change directory to .CURDIR before invoking ${MAKE}.
1.178:
Fix whitespace usage in comment.
1.179:
Fix what rev. 1.176 broke, in particular, doing a priv'd build into
an NFS root area for a diskless client. In such a situation, you
DO want the postinstall-check to be run.

The circumstances under which postinstall-check is now run:
* UNPRIVED is not set.
* The original target invoked was not distribution, release, or
snapshot.
1.180:
find the Makefile for postinstall-check in the presence of ${.OBJDIR}s

Resolves ticket #993 from grant (and possibly others), and some PRs


# 1.175.2.1 01-Nov-2002 tron

Pull up revision 1.176 (requested by lukem in ticket #319):
In afterinstall, only run postinstall check if DESTDIR != / (or equivalents).
Fixes [misc/17275] from Gregory McGarry <g.mcgarry@ieee.org>


# 1.238.2.4 02-Sep-2005 tron

Pull up following revision(s) (requested by lukem in ticket #716):
Makefile: revision 1.240
Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.238.2.3 29-Aug-2005 tron

Backout ticket #716 because it causes build failures if "build.sh" is
used with the "-j" argument.


# 1.238.2.2 28-Aug-2005 tron

Pull up following revision(s) (requested by lukem in ticket #716):
Makefile: revision 1.240
Modify "release" to invoke "make distribution" instead of "make build",
so that the "obsolete file removal" functionality of "distribution" is used.
Fixes build problems numerous people have experienced with MKUPDATE=yes
and the "release" target.


# 1.238.2.1 20-Apr-2005 tron

Pull up revision 1.239 (requested by lukem in ticket #165):
use usr.sbin/postinstall/postinstall instead of etc/postinstall


# 1.246.2.4 05-Jun-2009 snj

Pull up pkg_install-20090528, libarchive-2.5.5 and libfetch-2.23
with the associated build infrastructure as of 20090929 from HEAD.


# 1.246.2.3 26-Oct-2007 liamjfoy

branches: 1.246.2.3.2;
Pull up following revision(s) (requested by pavel in ticket #947):
Makefile: revision 1.250
usr.sbin/postinstall/postinstall: revision 1.51
usr.sbin/postinstall/postinstall: revision 1.52
Return exit status 1 for failed chacks/fixes, 2 for errors. Suggested
by hubertf. Use exit status 3 for internal errors (misuse of internal
functions).
Add a check for obsolete sendmail in /etc/mailer.conf, installs a
fresh copy of the file if invoked as "fix". Not enabled by default.
Do not abort on exit code 1 from postinstall check, this is expected.
Reported, fix suggested and tested by David Holland.
(Why does "make build" invoke postinstall check on destdir is another
question, it does not seem to have much sense.)


# 1.246.2.2 29-Sep-2007 xtraeme

Pull up following revision(s) (requested by jnemeth in ticket #864):
distrib/common/Makefile.bootcd: revision 1.9
distrib/common/Makefile.bootcd: revision 1.10
distrib/common/Makefile.bootcd: revision 1.11
doc/BUILDING.mdoc: revision 1.51
doc/BUILDING.mdoc: revision 1.52
doc/BUILDING.mdoc: revision 1.53
build.sh: revision 1.172
build.sh: revision 1.173
build.sh: revision 1.174
build.sh: revision 1.175
BUILDING: revision 1.64
BUILDING: revision 1.65
BUILDING: revision 1.66
share/man/man7/release.7: revision 1.23
share/man/man7/release.7: revision 1.24
Makefile: revision 1.248

Add an iso-dir=directory option. When combined with iso-image or
iso-image-source, it will cause directory to be added to the CD-ROM image.

Convert build.sh iso-dir=directory option to -C cddir as per jmmv@ on
source-changes.


# 1.246.2.1 08-Mar-2007 riz

branches: 1.246.2.1.2;
Pull up following revision(s) (requested by bouyer in ticket #494):
sys/arch/i386/conf/GENERIC.MP: revision 1.9
distrib/pc532/cdroms/installcd/Makefile: revision 1.1
distrib/macppc/Makefile: revision 1.15
distrib/ofppc/Makefile: revision 1.2
distrib/ibmnws/Makefile: revision 1.2
distrib/acorn32/Makefile: revision 1.18
distrib/x68k/cdroms/installcd/Makefile: revision 1.1
distrib/sparc/Makefile: revision 1.7
distrib/sparc64/cdroms/Makefile: revision 1.1
distrib/hp300/cdroms/Makefile: revision 1.1
distrib/hpcsh/Makefile: revision 1.6
distrib/ofppc/cdroms/installcd/Makefile: revision 1.1
distrib/playstation2/Makefile: revision 1.13
distrib/news68k/cdroms/installcd/Makefile: revision 1.1
distrib/amiga/cdroms/installcd/Makefile: revision 1.1
distrib/hp700/cdroms/installcd/Makefile: revision 1.1
distrib/playstation2/cdroms/Makefile: revision 1.1
distrib/amiga/cdroms/Makefile: revision 1.1
etc/etc.mac68k/Makefile.inc: revision 1.18
distrib/shark/cdroms/installcd/Makefile: revision 1.1
distrib/hpcmips/Makefile: revision 1.28
distrib/hpcmips/cdroms/Makefile: revision 1.1
distrib/amd64/floppies/Makefile: revision 1.3
sys/arch/amd64/conf/INSTALL_ACPI: file removal
distrib/i386/cdroms/Makefile: revision 1.4
distrib/acorn26/cdroms/installcd/Makefile: revision 1.1
distrib/hpcsh/cdroms/Makefile: revision 1.1
distrib/prep/cdroms/Makefile: revision 1.1
distrib/pc532/Makefile: revision 1.4
distrib/acorn32/cdroms/installcd/Makefile: revision 1.1
distrib/sun2/Makefile: revision 1.8
distrib/vax/Makefile: revision 1.17
distrib/sparc64/cdroms/installcd/Makefile: revision 1.1
distrib/pmax/cdroms/Makefile: revision 1.1
distrib/mipsco/cdroms/installcd/Makefile: revision 1.1
distrib/sun3/cdroms/installcd/Makefile: revision 1.1
distrib/vax/cdroms/installcd/Makefile: revision 1.1
distrib/hpcarm/cdroms/installcd/Makefile: revision 1.1
distrib/mvme68k/Makefile: revision 1.4
distrib/mvmeppc/cdroms/Makefile: revision 1.1
distrib/newsmips/Makefile: revision 1.4
sys/arch/i386/conf/GENERIC.MPACPI: file removal
distrib/hpcarm/cdroms/Makefile: revision 1.1
distrib/evbppc/cdroms/Makefile: revision 1.1
sys/arch/i386/conf/INSTALL_LARGE: revision 1.1
distrib/i386/cdroms/installcd/Makefile: revision 1.2
distrib/i386/cdroms/installcd/Makefile: revision 1.3
doc/CHANGES: revision 1.804
distrib/hpcsh/cdroms/installcd/Makefile: revision 1.1
distrib/i386/cdroms/bootcd/Makefile: revision 1.2
distrib/mvmeppc/cdroms/installcd/Makefile: revision 1.1
distrib/i386/cdroms/bootcd/Makefile: revision 1.3
distrib/evbarm/Makefile: revision 1.8
distrib/mvmeppc/Makefile: revision 1.3
distrib/i386/cdroms/bootcd-com/Makefile: revision 1.2
distrib/i386/cdroms/bootcd-com/Makefile: revision 1.3
distrib/macppc/cdroms/installcd/Makefile: revision 1.1
distrib/acorn26/cdroms/Makefile: revision 1.1
distrib/alpha/cdroms/Makefile: revision 1.1
distrib/hp300/cdroms/installcd/Makefile: revision 1.1
distrib/amd64/floppies/bootfloppy/Makefile: revision 1.4
distrib/pmppc/cdroms/installcd/Makefile: revision 1.1
distrib/hp700/Makefile: revision 1.2
distrib/pmppc/Makefile: revision 1.2
distrib/arc/cdroms/Makefile: revision 1.1
sys/arch/amd64/conf/INSTALL: revision 1.66
distrib/sun3/cdroms/Makefile: revision 1.1
distrib/mipsco/Makefile: revision 1.4
distrib/sun3/Makefile: revision 1.9
distrib/vax/cdroms/Makefile: revision 1.1
distrib/pmppc/cdroms/Makefile: revision 1.1
distrib/amd64/cdroms/Makefile.cdrom: revision 1.1
distrib/atari/cdroms/installcd/Makefile: revision 1.1
distrib/evbppc/cdroms/installcd/Makefile: revision 1.1
distrib/newsmips/cdroms/installcd/Makefile: revision 1.1
distrib/pmax/Makefile: revision 1.4
Makefile: revision 1.247
distrib/cats/cdroms/installcd/Makefile: revision 1.1
sys/arch/amd64/conf/GENERIC: revision 1.130
sys/arch/amd64/conf/GENERIC: revision 1.131
distrib/sgimips/cdroms/installcd/Makefile: revision 1.1
distrib/hp700/cdroms/Makefile: revision 1.1
distrib/cats/cdroms/Makefile: revision 1.1
distrib/evbmips/Makefile: revision 1.3
distrib/evbmips/Makefile: revision 1.4
sys/arch/amd64/conf/GENERIC_ACPI: file removal
distrib/ews4800mips/Makefile: revision 1.2
distrib/amd64/cdroms/bootcd-com/Makefile: revision 1.2
distrib/i386/Makefile: revision 1.5
distrib/amd64/cdroms/installcd/Makefile: revision 1.2
distrib/mvme68k/cdroms/installcd/Makefile: revision 1.1
distrib/alpha/cdroms/installcd/Makefile: revision 1.1
etc/etc.amd64/Makefile.inc: revision 1.7
distrib/i386/instkernel/Makefile: revision 1.6
distrib/x68k/cdroms/Makefile: revision 1.1
distrib/i386/cdroms/Makefile.cdrom: revision 1.1
distrib/sandpoint/Makefile: revision 1.4
distrib/i386/cdroms/Makefile.cdrom: revision 1.2
distrib/amiga/Makefile: revision 1.3
distrib/amd64/cdroms/bootcd/Makefile: revision 1.2
distrib/news68k/Makefile: revision 1.4
distrib/amd64/floppies/bootfloppy-com/Makefile: revision 1.5
distrib/news68k/cdroms/Makefile: revision 1.1
distrib/sparc/cdroms/Makefile: revision 1.1
distrib/shark/cdroms/Makefile: revision 1.1
etc/Makefile: revision 1.341
distrib/amd64/instkernel/Makefile: revision 1.2
distrib/sparc64/Makefile: revision 1.7
distrib/dreamcast/cdroms/Makefile: revision 1.1
distrib/shark/Makefile: revision 1.3
distrib/ews4800mips/cdroms/Makefile: revision 1.1
distrib/sun2/cdroms/installcd/Makefile: revision 1.1
distrib/shark/Makefile: revision 1.4
distrib/macppc/cdroms/Makefile: revision 1.1
distrib/mvme68k/cdroms/Makefile: revision 1.1
distrib/sun2/cdroms/Makefile: revision 1.1
distrib/hpcarm/Makefile: revision 1.3
distrib/arc/cdroms/installcd/Makefile: revision 1.1
distrib/hpcmips/cdroms/installcd/Makefile: revision 1.1
distrib/mipsco/cdroms/Makefile: revision 1.1
distrib/Makefile.inc: revision 1.9
distrib/playstation2/cdroms/installcd/Makefile: revision 1.1
distrib/ibmnws/cdroms/installcd/Makefile: revision 1.1
distrib/newsmips/cdroms/Makefile: revision 1.1
distrib/arc/Makefile: revision 1.3
distrib/sparc/cdroms/installcd/Makefile: revision 1.1
distrib/evbmips/cdroms/installcd/Makefile: revision 1.1
distrib/ews4800mips/cdroms/installcd/Makefile: revision 1.1
distrib/prep/Makefile: revision 1.3
distrib/ibmnws/cdroms/Makefile: revision 1.1
distrib/sandpoint/cdroms/Makefile: revision 1.1
distrib/atari/Makefile: revision 1.6
distrib/sgimips/cdroms/Makefile: revision 1.1
distrib/amd64/Makefile: revision 1.4
distrib/atari/cdroms/Makefile: revision 1.1
distrib/x68k/Makefile: revision 1.5
distrib/x68k/Makefile: revision 1.6
distrib/sandpoint/cdroms/installcd/Makefile: revision 1.1
distrib/evbarm/cdroms/Makefile: revision 1.1
distrib/acorn32/cdroms/Makefile: revision 1.1
distrib/cats/Makefile: revision 1.3
distrib/evbmips/cdroms/Makefile: revision 1.1
distrib/pc532/cdroms/Makefile: revision 1.1
distrib/Makefile: revision 1.14
distrib/evbarm/cdroms/installcd/Makefile: revision 1.1
distrib/ofppc/cdroms/Makefile: revision 1.1
distrib/amd64/cdroms/Makefile: revision 1.3
distrib/common/Makefile.bootcd: revision 1.8
distrib/i386/cdroms/bootcd-laptop/Makefile: file removal
sys/arch/i386/conf/GENERIC: revision 1.813
distrib/hp300/Makefile: revision 1.17
sys/arch/i386/conf/GENERIC: revision 1.814
distrib/evbppc/Makefile: revision 1.2
distrib/pmax/cdroms/installcd/Makefile: revision 1.1
etc/etc.i386/Makefile.inc: revision 1.49
distrib/sgimips/Makefile: revision 1.2
distrib/prep/cdroms/installcd/Makefile: revision 1.1
distrib/acorn26/Makefile: revision 1.4
distrib/dreamcast/cdroms/installcd/Makefile: revision 1.1
distrib/alpha/Makefile: revision 1.22
distrib/dreamcast/Makefile: revision 1.2
Improve the use of makefs to build boot CDs, and make it truely MI:
- allow to specify the "instkernel" directory, and allow to put multiple
kernels on the image
- allow to specify the directory where the image will be created
- only use bootxx_cd9660 if it exists
- search for second-stage boot as usr/mdec/boot.${MACHINE} in addition to
usr/mdec/boot
- make 'installboot -e' optional
- use target 'release' or 'iso_image' depending on ${CDRELEASE}
- call some MD targets, which will eventually complete the file list or
make the image bootable
For the benefit of modern hardware, enable ACPI by default in INSTALL and
GENERIC kernels. If ACPI is an issue on your hardware, 'boot -c' and
'disable acpi' should be a workaround. ACPI-enabled kernels works fine
on pre-acpi hardware.
for amd64:
- add ACPI to INSTALL and GENERIC, remove the *_ACPI config files.
- get rid of the bootfloppy-big.fs boot image, and got to a 3-floppy boot
image
for i386:
- introduce INSTALL_LARGE which has ACPI and some devices with big firmware
- move some devices from INSTALL to INSTALL_LARGE
- Boot floppies still use INSTALL, and bootfloppy-big.fs is still there
(for thoses who want to build el-torito floppy emulation boot CD) and use
INSTALL.
For both, drop the 'iso-image' code in etc/ to make the iso bootable, we'll
use something else to build bootable CDs.
Add an iso_image target (iso-image as a target name doesn't play well with
bsd.subdirs.mk) in distrib/makefile, which builds an iso image for $MACHINE
with binary sets, stored in ${RELEASEDIR}/iso. The image is bootable for:
alpha, amd64, cats, i386, pmax, sgimips, sparc, sparc64, sun3, vax.
mac68k/macppc no there yet because of missing feature in makefs.
call iso_image in distrib/ for iso-image in the top Makefile.
Use the new common/Makefile.bootcd to make i386 and amd64 bootable ISO
images. amd64 gets a single kernel; i386 images gets 3 kernels:
- netbsd, copy from netbsd-INSTALL_LARGE.gz, loaded by default
- nbsd-l, copy from netbsd-INSTALL_LAPTOP.gz
- nbsd-i, copy from netbsd-INSTALL.gz for those who want the traditionnal
non-ACPI kernel
- drop the bootcd-laptop image
both gets an installcd image, which is the same as bootcd but with the
binary sets in addition to kernels.
Make iso-image do nothing for all but mac68k, which still
relies on mkisofs to create bootable ISO image. macppc should also be there,
but it seems the code to make an iso bootable never got added in etc.macppc/
Fix typo in subdir name.
Revert local changes that went in accidentally with the "add ACPI" commit.
Note ACPI by default in i386/amd64, and the iso-image changes.
Fix SUBDIR in previous
Remove duplicate ACPIVERBOSE and ACPI_SCANPCI; pointed out by Nicolas Joly.
Correct typo: the directory is named cdroms, not cdrom.
Use nblaptop and nbnoacpi for the alternative kernel names; as suggected by
Alan Barrett. While there factor out the kernels in Makefile.cdrom.


# 1.246.2.3.2.1 05-Jun-2009 snj

Apply patch (requested by joerg in ticket #1322):
Pull up pkg_install-20090528, libarchive-2.5.5 and libfetch-2.23
with the associated build infrastructure as of 20090529 from HEAD.


# 1.246.2.1.2.2 05-Jan-2008 wrstuden

Catch up to netbsd-4.0 release.


# 1.246.2.1.2.1 30-Sep-2007 wrstuden

Catch up w/ last night's netbsd-4


# 1.247.4.3 22-Mar-2008 matt

sync with HEAD


# 1.247.4.2 08-Jan-2008 matt

sync with HEAD


# 1.247.4.1 06-Nov-2007 matt

sync with HEAD


# 1.251.4.1 24-Mar-2008 keiichi

sync with head.


# 1.252.4.2 17-Sep-2008 wrstuden

Sync with wrstuden-revivesa-base-2.


# 1.252.4.1 22-Jun-2008 wrstuden

Sync w/ -current. 34 merge conflicts to follow.


# 1.252.2.1 03-Jun-2008 yamt

sync with head


# 1.262.2.5 07-Mar-2011 riz

Pull up following revision(s) (requested by jym in ticket #1565):
Makefile: revision 1.282 via patch
BUILDING: revision 1.92 via patch
Pass down INSTALLSETS variable to installsets target. Use :Q to escape
shell meta-characters, as the variable contains a list of sets, separated
by spaces.
$ ./build.sh -V INSTALLSETS="base etc" install=idir
should now work as expected.
Reviewed by apb@ on tech-toolchain.


# 1.262.2.4 05-Jan-2011 riz

Apply patch (requested by mrg in ticket #1499):

src/compat version 2. this allows building any number of alternate
library / program target ABIs. rather than duplicating the list of
subdirs and Makefiles to build, it re-traverses the necessary ones.
details:
- add support for MAKEDIRTARGETENV to share/mk
- renames LD32DIR to MLIBDIR
- fixes library builds for some subdirs (more was built than needed)
- fixes /bin & /sbin apps in compat mode
- reduces complexity in src/compat and the rest of the tree
- updates ldd netbsd32 support


# 1.262.2.3 27-Mar-2009 msaitoh

branches: 1.262.2.3.4;
Pull up following revision(s) (requested by sketch in ticket #536):
etc/Makefile: revision 1.364
Makefile: revision 1.267
usr.sbin/postinstall/postinstall: revision 1.90
usr.bin/hexdump/parse.c: revision 1.25
sys/arch/x86/acpi/genwakecode.sh: revision 1.3
usr.sbin/postinstall/postinstall: revision 1.87
usr.sbin/postinstall/postinstall: revision 1.88
usr.sbin/postinstall/postinstall: revision 1.89
sys/arch/x86/acpi/Makefile.wakecode.inc: revision 1.4
sys/conf/Makefile.kern.inc: revision 1.120
Use ll instead of non-standard q as length modifier in format strings. Makes
this work on Solaris. OK by apb.
Not every grep knows -q. Ok by apb.
Use sed, awk and hexdump from tools to make this work on Solaris. Ok by apb.
Use awk and grep host tools where required. 'build.sh release' now
works on Solaris (but only with HOST_CC=/usr/sfw/bin/gcc for now).
"grep -q" is not portable; use "grep >/dev/null" instead. Also add a
comment saying that postinstal is invoked during a cross build.
In file_exists_exact(), fix an incorrect test of "1" instead of "$1",
and improve the comment explaining what this function does.
As long as we don't yet have a working TOOL_GREP, fgrep is more portablethan grep -F.


# 1.262.2.2 06-Dec-2008 snj

Pull up following revision(s) (requested by cube in ticket #168):
Makefile: revision 1.264
Invoke postinstall with the environment variable MAKE set up to the relevant
value, so that postinstall picks up correct values.


# 1.262.2.1 15-Nov-2008 snj

Pull up following revision(s) (requested by mrg in ticket #64):
distrib/sets/Makefile: revision 1.64
external/mit/xorg/server/Makefile: revision 1.5
share/mk/bsd.README: revision 1.237
BUILDING: revision 1.79
share/mk/bsd.x11.mk: revision 1.71
share/mk/bsd.own.mk: revision 1.544
usr.bin/ssh/Makefile.inc: revision 1.18
distrib/sets/sets.subr: revision 1.72
share/man/man5/mk.conf.5: revision 1.42
doc/BUILDING.mdoc: revision 1.68
etc/Makefile: revision 1.360
Makefile: revision 1.263
- retire MKXORG from public use
- introduce X11FLAVOUR to choose src/x11 vs src/external/mit/xorg
for the X11 to build if MKX11=yes is set. it takes the values
of either Xorg or XFree86.
- default to Xorg on alpha, i386, macppc, shark, sparc and sparc64
- remove MKXORG_WITH_XSRC_XSERVER, unused and never useful


# 1.262.2.3.4.1 13-Dec-2009 mrg

pullup from -current:
>revision 1.276
>date: 2009/12/13 09:29:27; author: mrg; state: Exp; lines: +12 -8
>adjust the do-compat-* rules now that src/compat/lib and friends no longer exist


# 1.266.2.1 13-May-2009 jym

Sync with HEAD.

Third (and last) commit. See http://mail-index.netbsd.org/source-changes/2009/05/13/msg221222.html


# 1.281.2.1 08-Feb-2011 bouyer

Sync with HEAD


# 1.282.2.1 23-Jun-2011 cherry

Catchup with rmind-uvmplock merge.


# 1.289.2.5 22-May-2014 yamt

sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")


# 1.289.2.4 15-Jan-2013 yamt

sync with (a bit old) head


# 1.289.2.3 30-Oct-2012 yamt

sync with head


# 1.289.2.2 23-May-2012 yamt

sync with head.


# 1.289.2.1 16-Apr-2012 yamt

sync with head


# 1.291.2.2 15-Aug-2012 sborrill

Pull up the following revisions(s) (requested by martin in ticket #503):
usr.sbin/postinstall/postinstall: revision 1.142-1.145
Makefile: revision 1.295-1.298

Make test for and removal of old pty device nodes more portable.


# 1.291.2.1 09-May-2012 riz

Pull up following revision(s) (requested by veego in ticket #238):
Makefile: revision 1.292
Add usr.bin to the exclude list for make includes.
This is no longer needed after flex was moved to the external framework.


# 1.299.2.3 19-Aug-2014 tls

Rebase to HEAD as of a few days ago.


# 1.299.2.2 24-Feb-2013 tls

resync with head


# 1.299.2.1 19-Nov-2012 tls

Resync to 2012-11-19 00:00:00 UTC


# 1.305.2.1 10-Aug-2014 tls

Rebase.


# 1.309.2.2 04-May-2015 riz

Pull up following revision(s) (requested by martin in ticket #733):
Makefile: revision 1.313
PR 49870: pass the xsrc path to postinstall


# 1.309.2.1 14-Nov-2014 martin

Pull up following revision(s) (requested by snj in ticket #227):
Makefile: revision 1.311
build.sh: revision 1.299
doc/BUILDING.mdoc: revision 1.105
distrib/notes/macppc/prep.OPENFIRMWARE: revision 1.16
distrib/notes/macppc/prep.OPENFIRMWARE: revision 1.17
BUILDING: revision 1.110
distrib/notes/arc/prep: revision 1.3
distrib/notes/arc/prep: revision 1.4
distrib/notes/cats/prep: revision 1.12
distrib/notes/cats/prep: revision 1.13
distrib/notes/sparc/install: revision 1.58
distrib/notes/common/main: revision 1.512
share/man/man8/man8.macppc/ofwboot.8: revision 1.13
Update path to release ISOs.