Commit Graph

428 Commits

Author SHA1 Message Date
jhb
aca3e09a0c Disconnect Alpha from 'make universe'. 2006-05-11 18:54:16 +00:00
ru
86d485cdba Add the new "showconfig" target that displays build configuration.
Suggested by:	phk
2006-03-18 14:30:23 +00:00
ru
d90987744c Make ${SUBDIR_TARGETS} work at the uppermost level as well. 2006-03-15 14:22:32 +00:00
yar
8d6d9efea2 Do not discard the current value of __MAKE_CONF when testing
whether MAKEOBJDIRPREFIX is set at a wrong place.

Reviewed by:	ru
MFC after:	3 days
2006-03-01 13:07:17 +00:00
ru
208069ffa8 Fix a bug in previous revision: skip LINT if it exists, not NOTES
(the source for LINT), as I initially intended.
2005-11-28 11:14:36 +00:00
ru
f97bcd3b19 universe: don't attempt to compile DEFAULTS and don't compile LINT twice. 2005-11-28 11:03:59 +00:00
netchild
f78772bbe4 Add delete-old and delete-old-libs targets:
- removes obsolete files/dirs or libraries.
  - works in interactive (default) and batch mode
  - respects DISTDIR
  - documented in UPDATING and build(7)

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

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

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

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

Discussed on:		arch (long ago), current (this year)
Additional input from:	re (hrs)
Approved by:		mentor (joerg)
2005-07-23 14:23:30 +00:00
ru
f5828b013e - Embed the "buildkernels" target into the "universe" target so that
the "make -n universe" output looks more builder (human) friendly.

- Wrap the "universe" target into a ".if make(universe)"; it's only
  intended to be called directly so it should be safe to do it.
2005-07-19 11:21:14 +00:00
ru
e10a9fc385 Make the `distrib-dirs' target official and working properly
when cross-building (installing).  (This is useful for NFS
installing world/kernel to another architecture machine.)
2005-07-15 14:38:54 +00:00
ru
73ab2fc036 Provide 32-bit runtime support on amd64 as a separate distribution, lib32.
Prodded by:	obrien
Nodded by:	peter
Approved by:	re
2005-06-16 18:16:14 +00:00
harti
13d684fd15 Repo-copy tools/regression/usr.bin/make to tools/build/make_check
and adjust the path in the Makefile for the upgrade_checks target.
These checks are really feature upgrade checks that should be fast
and just find out whether we need to build a new make before
proceeding with other targets like buildworld. This makes the
place free for a real regression test suite in the old place.
2005-03-02 12:33:23 +00:00
ru
5d9bc16368 Added the convenience "distribution" target which calls the
target of the same name from src/etc/Makefile with a proper
environment, suitable to be used during upgrades and cross-
builds.
2005-02-27 12:11:35 +00:00
ru
dc4d1e599e Added the "buildenv" target, for developers only!
CAVEAT: if you run tcsh(1) from within this target, this will
reset your PATH making this target mostly useless.  Careful!

Submitted by:	jmg, ru
2005-02-26 22:02:18 +00:00
ru
c1a820195c NOSHARED -> NO_SHARED 2004-12-21 09:59:45 +00:00
ru
cec60429bb Start the dreaded NOFOO -> NO_FOO conversion.
OK'ed by:	core
2004-12-21 08:47:35 +00:00
ru
4b04260bb8 Previous revision didn't fix all cases. For example,
testing for variables that are always defined (e.g.,
"make -V CC") would still print a false warning.  Fix
this by only passing a submake the MAKEOBJDIRPREFIX=*
argument if it was present.  As a result, we loose
the check for -DMAKEOBJDIRPREFIX, or an esoteric
"MAKEOBJDIRPREFIX = foo" (with embedded spaces), but
these are unorthodox enough to not care about them.

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

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

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

This fixes release.
2004-12-13 00:49:52 +00:00
harti
c90efa2b2f Fix builds with a read-only directory and a make upgrade. This is done
by forcing the creation of an object directory for the make regression
tests. Let make handle the tracking of the dependency and installation
of test_shell script.

Submitted by:	ru
2004-12-07 14:41:16 +00:00
peter
0555f41924 Convert tools/lib32/build.sh into world connectable hooks. This still
rates pretty high on the "hack!" scale, but it works for me.  Adding
-DWANT_LIB32 to the world build command line, or 'WANT_LIB32=yes' to
/etc/make.conf will include the 32 bit libraries with the build.

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

This is still a WIP.  We needed this at work so that we could install from
a readonly obj tree - lib32/build.sh wasn't up to that.
2004-11-06 03:14:26 +00:00
ru
d7592a9bb7 Fixed MAKEOBJDIRPREFIX variable type check in case the env(1)
binary is not in PATH, as is the case with installworld, etc.
2004-10-18 17:47:31 +00:00
ru
d4d76490aa My take at improving the universe: allow the worlds to be
built in parallel.  Examples:

make universe
	Build worlds sequentially, each world sequentially.

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

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

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

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

Prayers:	obrien, phk
2004-08-18 07:17:01 +00:00
ru
75f12cc1b8 Moved the MAKEOBJDIRPREFIX check from Makefile.inc1 to Makefile,
to suppress warnings with installworld and distributeworld when
env(1) cannot be found in the PATH.
2004-08-18 06:49:56 +00:00
harti
91ae96e9ab Make make recurse into sub-directories and sub-makes when given
two -n flags.  If only one -n flag is given the old behaviour
is retained (POLA).  In order to make this working for installworld
change the IMAKEENV in this case so that the tools are found
(we have no temporary installation environment in this case).

Submitted by:	ru (IMAKEENV part)
2004-08-09 11:38:41 +00:00
kensmith
fdb6f08c0e The doc team reworked the section of the handbook describing how to
rebuild things, further discouraging 'make world'.  The title of
that section is now changed...
2004-07-23 21:21:34 +00:00
markm
b538ed4a41 Rename a preposterously long name with one that might look a bit
more professional. While here, write a few lines of explanatory
text to explain what its for.

Discussed with:	rwatson
With hat:	core
2004-07-18 18:55:31 +00:00
obrien
6670049bcf Add an "out" to the now required BS of defining DESTDIR. 2004-07-18 01:19:33 +00:00
marcel
7beb6d42ce Properly terminate a quoted string in the previous commit. Oddly
enough this only seems to cause problems with -jX so went unnoticed
until now.
2004-07-17 20:57:37 +00:00
marcel
dec36cc079 As per discussions on current@, protect unsuspecting users from
trying to upgrade their system with make world instead of following
the preferred and suggested sequence of commands. The fact remains
that make world does not upgrade the kernel.
Allow make world when DESTDIR has been specified, including when
DESTDIR specifies the root file system. Otherwise, print a useful
warning and fail.

Reviewed, tested and scrutinized by: gad@
2004-07-16 02:51:28 +00:00
phk
98f388939d Add a JFLAG which can be used to speed up universe:
make universe JFLAG=-j12
2004-07-09 13:55:50 +00:00
des
d6c0324b5f Add a kernel-toolchain target which only builds the bits required to build
a kernel.  This is essentially the same as the toolchain target, except
that it does not build headers and libraries.

Submitted by:	ru
2004-04-13 13:42:01 +00:00
ru
da8ebfd558 Added the `toolchain' top-level target, which builds enough of
buildworld, up to and including libraries, except for actually
building the world.

Requested by:	many
2004-03-24 08:26:22 +00:00
ru
c2d12bfbee Protect shell expansions. 2004-03-02 14:32:23 +00:00
johan
bed3e7f235 Add amd64 to universe.
Approved by:	peter
2004-02-29 13:07:05 +00:00
gad
fd20be1aef Change the 'realclean' target name to be 'cleanworld', to match other
targets like buildworld, installworld.

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

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

Reviewed by:	bde
MFC after:	10 days
2004-02-19 21:09:58 +00:00
gad
80b725fa15 Add a 'realclean' target, which simply and quickly removes everything
that was built in previous 'make buildworld' and 'make buildkernel'.  The
target knows enough to run a 'chflags -R 0' and a second 'rm' if the first
'rm' ran into any errors while removing files.

Suggested by:	email with Richard Coleman Re: upcoming 64b-time_t changes.
Reviewed by:	imp, marcel, and others on -hackers
MFC after:	1 week
2004-02-16 20:18:25 +00:00
peter
84e2c4c55b Put on some factor 30+ bikeshed repellent and export the internal
Makefile.inc1 underscore targets with a big warning that they are
intentionally undocumented, subject to change without notice and
might poison your dog etc.  If you don't know what they are, then they
are not meant for you to use.

I've added these by hand to so many many trees that I've lost count.  I
find them rather useful.
2003-12-09 02:08:19 +00:00
kris
9ae8412ffe Don't allow the 'make' target (which rebuilds make for bootstrapping)
to become confused by a file called 'make' in /usr/src

Submitted by:	ru
2003-11-07 08:36:55 +00:00
ru
0f6892a7db Retired the "most" and "installmost" targets -- they just
do not have a chance to work nowadays as we have a lot of
internal libraries in lib/.

Discussed with:	marcel, wollman
2003-10-04 18:53:38 +00:00
ru
dfb52d2c75 Cosmetics: folded BITGTS into TGTS. 2003-08-30 13:33:41 +00:00
marcel
7eec2ccb23 Limit testing for an up-to-date version of make(1) to the world and
buildworld targets by default, but allow it to be done for all user
targets by introducing a boolean option, named ALWAYS_CHECK_MAKE.

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

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

Reviewed by: gad, imp, obrien, peter
2003-08-28 04:03:13 +00:00
ru
7ba06f3d15 - Don't print "elf" before printing "make world" (aout support has been
removed).

- Avoid using printf(1) where a simple shell's built-in echo is enough.
2003-08-06 11:06:38 +00:00
ru
1563c405c7 The `mk' target is long dead. 2003-07-20 12:38:29 +00:00
ru
5dff75f40c Use an up-to-date make binary in the upgrade_checks target if
one is already available.  This avoids sometimes unnecessary
step of attempting to rebuild the make binary again which may
fail at all if, for example, one has removed his /usr/include
before doing an installworld (to keep /usr/include tidied up).

Pointed out by:	kris, marcel
2003-07-19 23:17:08 +00:00
ru
1b9c1552b4 Don't hardcore PATH into BINMAKE; the latter should only be
comprised of the path to a make(1) binary (possibly the one
built by the "make" target in this Makefile), and a path to
a fresh share/mk.  The idea is to allow "make release" pick
up the right "make" binary, if one exists.

This fixes release.5 I broke with the last commit here; the
second PATH here was overriding the right one from WMAKEENV
while rebuilding the "build-tools" for crunched binaries.
2003-07-04 17:35:26 +00:00
ru
240df1e4a7 Fixed style bugs related to parentheses in Makefile.inc1.
Submitted by:	bde

Fixed nearby bug: propagate the root Makefile's idea of
the appropriate "make" binary down to release/Makefile.
2003-07-04 14:27:06 +00:00
ru
4e21fcc762 Do the upgrade checks quietly. 2003-06-22 21:56:22 +00:00
simokawa
c2d986d0e3 Allow installkernel.debug and reinstallkernel.debug. 2003-06-22 10:01:03 +00:00
imp
9c53d2269f Kill upgrade target docs. It too is stale.
Submitted by: ru
2003-04-03 05:34:36 +00:00
imp
e22dff07de Kill aout to elf upgrade path. From an old comment in the makefile:
# If -DWANT_AOUT is specified, a `make world' with OBJFORMAT=elf will
# update the legacy support for aout. This includes all libraries, ld.so
# and boot objects. This part of build should be regarded as
# deprecated and you should _not_ expect to be able to do this past the
# release of 4.0. You have exactly one major release to move entirely
# to elf.

Now that we're past 5.0, these aren't needed at all anymore and it is
well past its freshness date.
2003-04-03 05:28:09 +00:00
ru
ae8811433e Don't make buildworld and buildkernel in parallel.
And this is probably what you expect when you say
"make -jX buildworld buildkernel".
2003-02-27 13:11:33 +00:00
ru
ef7ce5bd49 Don't spam sys/${MACHINE}/conf/ with _.${MACHINE}.makeLINT.
Submitted by:	johan
2003-02-19 16:57:12 +00:00
ru
a777b75f10 Fixed universe.
Folded pc98 into the common case.
Retired ${JFLAG} (``make -jX universe'' should work).
2003-02-19 15:40:19 +00:00
phk
14e0be87e0 Fix make universe's kernel builds on pc98: We need to pass both ARCH
and TARGET_ARCH.
2003-02-18 17:35:20 +00:00
ru
d058571890 Part 3/3 of unbreaking cross releases:
When we call "distributeworld" as part of "make release", we set
MACHINE and MACHINE_ARCH to point to TARGET and TARGET_ARCH; this
confused src/Makefile's idea of what ${MAKEPATH}, and consequently
${MAKE}, is (well, it still confuses ${MAKEPATH}, but see below).

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

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

This fix is still not quite right, in a situation where a single
/usr/obj is shared between different architecture machines, but
it is less critical and I hope to fix that soon.
2003-01-29 10:00:42 +00:00
schweikh
a7323e5453 Minor typo fixes and whitespace cleanups. 2002-12-30 16:48:35 +00:00
imp
1c0c8df0fd Build kernels for pc98 just like the other platforms. Also, remove
one space to make the dates line up for easy mental math.

# Too bad only i386 and pc98 are the only parts of the universe
# currently buildable on my box :-(
2002-12-14 22:36:56 +00:00
bmah
a9ef920ab1 Minor, cosmetic change to buildworld output to make it reflect
rev. 1.270 more accurately.

Reviewed by:	ru
Approved by:	re (jhb)
2002-12-03 17:49:05 +00:00
ru
4a3df4315b If /usr/bin/make fails to pass the regression tests, it might not
be suitable for building.  The old action here was to upgrade the
make in /usr/bin.  This is both bogus and does not work under non
root.  So, rather than overwriting the existing /usr/bin/make, we
now install it into a safe location, and use it from there.

Reviewed by:	imp, marcel
Approved by:	re (rwatson)
2002-12-02 14:31:21 +00:00
ru
a227a02ef4 Moved make(1) regression tests from src/Makefile to where they
belong (src/tools/regression/usr.bin/make), and use the latter
to test if make(1) is adequate for building the world.

Approved by:	re
2002-11-28 13:08:09 +00:00
phk
2f634c2c49 PC98 is not a true architecture, but a subarchitecture of i386, so we need
to use a slightly differnt command to PC98::buildworld.
2002-10-02 13:52:36 +00:00
phk
914ded8346 Add pc98 to universe target.
Remember about /usr/obj and look for conf/NOTES in the right place.
2002-10-01 09:58:50 +00:00
phk
58b4c8ef82 Add "make universe" target which:
for each arch i386 sparc64 alpha ia64
                make buildworld TARGET_ARCH=$arch
                if NOTES found
                        make LINT
                foreach kern ${arch}/conf/[A-Z0-9]*
                        make buildkernel TARGET_ARCH=$arch KERNCONF=$kern

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

On my dual 1.6G Athlon it takes roughly four hours to run this target.
2002-09-26 04:40:54 +00:00
peter
a51c9b6627 Initiate deorbit burn for the i386-only a.out related support. Moves are
under way to move the remnants of the a.out toolchain to ports.  As the
comment in src/Makefile said, this stuff is deprecated and one should not
expect this to remain beyond 4.0-REL.  It has already lasted WAY beyond
that.

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

Tested on: i386 (extensively), alpha
2002-09-17 01:49:00 +00:00
peter
e9b6904091 Deal with bootstrapping from an old -current (almost exactly a year old)
which fails the make tests (doesn't understand ${notdef:U}) and therefore
fails on __FBSDID in usr.bin/make/*.  -DBOOTSTRAPPING is no help here since
this is before we are using the new share/mk/* files, and it would conflict
with the builtin -DBOOTSTRAPPING support later.. so use a different flag.
2002-08-31 07:18:40 +00:00
ru
97a8cb2a43 Indentation. 2002-07-20 10:01:00 +00:00
ru
dbbb17f6a0 Upgrade make(1) if not passing the ``.if defined(notdef) && ${notdef:U}''
test (revealed by bsd.lib.mk,v 1.134).
2002-07-20 10:00:10 +00:00
dillon
926815252c correct syntax in last commit 2002-06-24 20:13:09 +00:00
dillon
bd5e8e0bcd Document TARGET_ARCH 2002-06-24 05:14:54 +00:00
ru
f24282207a Reimplement FILES support using bsd.files.mk with the
same set of features as in recently added bsd.incs.mk
(FILESGROUPS, accessibility from both bsd.prog.mk and
bsd.lib.mk, de-pessimized typical installation path,
etc.)  New standard targets: buildfiles, installfiles,
and files (buildfiles + installfiles).
2002-06-03 14:49:34 +00:00
obrien
f391d64cb7 Line up the make world completed output. 2002-05-30 05:01:40 +00:00
ru
265340befb Forgot to commit this for the includes' -> buildincludes',
`incsinstall' -> `installincludes' changes.
2002-05-24 16:08:13 +00:00
ru
59049318b6 Added new bsd.incs.mk which handles installing of header files
via INCS.  Implemented INCSLINKS (equivalent to SYMLINKS) to
handle symlinking include files.  Allow for multiple groups of
include files to be installed, with the powerful INCSGROUPS knob.
Documentation to follow.

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

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

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

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

Consistently use INCLUDEDIR instead of /usr/include.

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

These changes have been tested on i386 with the -DNO_WERROR "make
world" and "make release".
2002-05-12 16:01:00 +00:00
jwd
eb9cd028aa Bring doc up-to-date with current buildworld/buildkernel practices.
Reviewed by:	jhb
2002-05-08 01:55:08 +00:00
ru
fbb461a39b Added internal, non-recursive (SUBDIR) versions of the `all-man'
and `maninstall' targets.  This fixes the issue where each subdir
was descended into twice during "make all", and also resurrects
the standardization of `maninstall'.

Urged by:	bde
2002-05-07 15:42:56 +00:00
ru
7080bdd505 Milestone #2 in cross-arch make releases. They now work!
You need to set TARGET_ARCH and possibly TARGET, the same
way you normally do it for a cross build(7).

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

Put pwd_mkdb(8) under ${INSTALLTMP}; for `distributeworld'.
2002-04-30 11:50:01 +00:00
ru
be388967d4 Parallel "make release" fixes. 2002-04-29 15:22:01 +00:00
ru
8ad1c2807b Milestone #1 in cross-arch make releases.
Do not install games and profiled libraries to the ${CHROOTDIR}
with the initial installworld.

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

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

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

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

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

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

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

Inline createBOOTMFS target.

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

Assorted fixes:

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

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

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

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

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

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

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

Fast build machine provided by: Igor Kucherenko <kivvy@sunbay.com>
2002-04-26 17:55:27 +00:00
ru
1a085bedc0 Merge bsd.obj.mk's version of the _SUBDIR target with bsd.subdir.mk.
Ensure all standard targets honor SUBDIR.  Now `make obj' descends into
SUBDIRs even if NOOBJ is set (some descendants may still need an object
directory, but we do not have such precedents).  Now `make install' in
non-bsd.subdir.mk makefiles runs `afterinstall' target _after_ `install'
in SUBDIRs, like we do in bsd.subdir.mk.  Nothing depended on the wrong
order anyway.

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

De-standardize `maninstall', otherwise manpages would be installed twice.
(To be revised later.)
2002-04-23 09:03:56 +00:00
gshapiro
d0aa6dec50 Despite the fact that it is documented in the handbook, the release notes,
and UPDATING and has been posted to both freebsd-current and
freebsd-stable, users are still not adding the required smmsp user and
group before doing an installworld.  Therefore, don't let users do an
installworld unless they have followed directions.

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

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

MFC after:	1 week
2002-04-20 19:04:59 +00:00
keramida
072ba66d31 Makefile.inc0 is no longer used.
Update comments to reflect that.

Approved by:	dd, silence in -audit.
2002-03-03 22:37:35 +00:00
ru
5e0f439e98 FreeBSD 4.1 bootstrapping aid (``:C'' make(1) modifier used
by gnu/usr.bin/binutils/as/Makefile.inc0 is not there).

XXX: make(1) should return with a non-zero exit status here.
2002-02-08 09:48:34 +00:00
ru
d7aebcb4f6 Make it possible to build manpages for the entire source tree. 2001-03-27 08:43:28 +00:00
obrien
8428d214ad End words with a `.'.
Fixed spacing messed up in rev 1.244.
2001-03-04 10:43:14 +00:00
ru
3e8d7346e8 setlocale(3) has been fixed to match POSIX standard:
LC_ALL takes precedence over other LC_* envariables.
2001-03-02 16:52:14 +00:00
jkh
a75aa61223 Cosmetic fix: Document targets at the top in a uniform way. 2001-02-13 07:47:41 +00:00
obrien
28e327f168 Add back displaying the `world' start time when displaying the stop time.
However, don't prefix it with '>>>', so those greping for times will
not see it.
2000-12-06 04:35:45 +00:00
jkh
e957a4f81c Also list kernel target so one can get to it. 2000-12-01 22:00:33 +00:00
jkh
d9c0ea6db1 Document the "kernel" target. 2000-12-01 19:49:33 +00:00
marcel
da4d2f75d9 Fix release, broken by the perl cross-build fixes.
The distribute target is basicly the same as an install. For
perl, this means that miniperl is needed. Since miniperl is
only present in the object directory, we need to make sure
the path is set correctly. To do this, we have make release
use a new distribworld target that sets the path before doing
a make distribute.
2000-11-21 04:37:30 +00:00
jkh
0981bd80e0 While we're still arguing over debugging output, at least be in a
self-consistent state.

Requested by:	bde
2000-11-07 08:47:11 +00:00
jkh
d75ad8a75b MFS: eliminate duplicate start line 2000-11-05 23:14:49 +00:00
markm
e08f50cf70 Pass the reinstallkernel target through from Makefile to Makefile.inc1. 2000-09-19 11:15:40 +00:00
alex
550d50567d Mention the buildkernel/installkernel targets in the documentation. 2000-07-31 09:26:59 +00:00
markm
eb2f1b4a7c We have a new world order in libraries.
Goodbye libdes; Welcome libcrypto.
2000-02-24 23:03:16 +00:00
marcel
7db2a1ade5 Add the buildkernel and installkernel targets.
While here fix some minor style bugs (whitespacing) and move the
make target from Makefile.upgrade to this file.
Simplify the make target to make it readable.
2000-01-09 18:17:48 +00:00
marcel
eb1274d8db Descent into sub-makes with a fixed PATH. The PATH does not contain
/usr/games on purpose. All tools in /usr/games are built as part of
the tool stages to support building world on machines without games.

This fixes any build problems that have been caused by non-standard
paths and also removes the primary objection for not using absolute
paths.
1999-12-23 13:53:44 +00:00
marcel
76438b69a9 Oops! bypassing Makefile.inc0 without adding a `world' target is not
a good idea. Adding `world' to Makefile is save, because all hairy
bits are in Makefile.inc1 anyway.
1999-12-08 18:10:15 +00:00
marcel
10058a4f2b Restore the upgrade path from -stable to -current and prepare for
non-root cross-building.

o  Makefile.inc0 is not used anymore.
o  The legacy aout build has been removed.
o  Selectively build tools *before* building includes/libraries.
o  Avoid using mtree to populate the obj tree.
1999-12-08 13:45:11 +00:00
jb
86883d202e Remove a comment about setting objformat to elf by default. We've
done that already.

Change the -DWANT_AOUT comment to refer to 4.0 so that it sounds less
silly.
1999-09-18 08:27:55 +00:00
peter
efabb9ccb1 $Id$ -> $FreeBSD$ 1999-08-28 01:35:59 +00:00
hoek
6dfe0403e2 Comment change: "Be warned, this will update your installed system, except
for the configuration files in the /etc directory." ....  and the kernel.
1999-07-31 13:47:23 +00:00
obrien
882ac90fcc Change !defined(NOAOUT) knob to defined(WANT_AOUT). 1999-03-29 10:59:53 +00:00
jkh
f9abc2239b Note that the upgrade target exists, and what it does.
Requested by:		Wayne M Barnes <stabilizer@klentaq1.emergingtech.org>
1999-03-20 20:10:19 +00:00
msmith
64dde860b4 Use ${MAKE} not 'make -f'
Submitted by:	tfreak@fluffybunny.jaded.net
1999-02-17 20:56:09 +00:00
jkh
8ff9fc2177 Frob the upgrade target to be a bit more inclusive. This appears to
be a good bit more successful at doing automated upgrades than the
previous aout-to-elf target, anyway.  I'll MF3 in a couple of days
depending on how this does.
1999-01-26 09:12:21 +00:00
peter
1f0eb44495 Dip my toes into the fire and zap the leftover lkm hooks.. It seems they
try and recurse if the lkm dir exists for some reason but there isn't any
Makefile there. (eg: stray files prevented cvs update -P from removing the
empty dirs)
1998-12-28 17:03:50 +00:00
bde
a2b7e9578d Restored all lost user targets that are supported by bsd.subdir.mk:
checkdpadd, lint, maninstall, objlink, regress and tags.

Removed bogus user target cleanobj.  It is the non-recursive base of
the cleandir target, so it is not useful (or usable) here.
1998-10-17 15:25:26 +00:00
jkh
0e3d3b4b23 Add back a few useful targets lost in the reshuffle.
Reviewed by:	jb
1998-09-29 22:03:13 +00:00
jb
b8bf757d6f The legacy stuff needs gobs more space in the obj tree. 165->260 Mb. 1998-09-28 20:39:23 +00:00
jkh
06f1ed74d5 Restore default implict behavior of running the all target we had before. 1998-09-15 05:10:17 +00:00
ache
e573989d45 Revive hierarchy again.
Please commit only patches, not whole files!
1998-09-10 20:44:56 +00:00
jb
82de866dd9 Add the missing rerelease target back.
Reported by: Justin Gibbs.

Add the move-aout-libs upgrade target so that people who have already
gone elf can put their libraries through the mincer. Anyone who hasn't
deleted aout libraries from /usr/lib (but has done a make world putting
the new aout libs in /usr/lib/aout) will be asked for confirmation
to delete them one by one.
1998-09-09 06:07:32 +00:00
ache
1c519a6b15 Revive hierarchy target 1998-09-07 18:10:26 +00:00
jb
f745b89a3e YAMT (yet another missing target). It's a shame that these have to
be visible to the user. Maybe `make release' should call the backend
directly.
1998-09-04 21:19:37 +00:00
jb
c0a487abfb Add the distribute target that make release wants. 1998-09-04 09:19:19 +00:00
jb
8243f3b9a2 Add the clean cleandepend and cleanobj targets back. 1998-09-01 05:53:00 +00:00
jb
0654111216 E-day build system changes.
- Moved most of the guts of Makefile to Makefile.inc1 to become the
  backend for the build system.
- The new Makefile doesn't suffer from problems including the wrong
  sys.mk because it doesn't use anything in there or bsd.own.mk. So,
  from now on, the proper build command is just `make world' (or
  buildworld).
- The intermediate makefiles called Makefile.inc0 and Makefile.upgrade
  fiddle with the OBJFORMAT and MAKEOBJDIRPREFIX variables so that
  both aout and elf object trees can coexist. Makefile.upgrade contains
  the aout->elf transition build.
- A cross build environment is now very close to reality. Specifying
  TOOLDIR, setting OBJFORMAT and MAKEOBJDIRPREFIX allow that.

See the comments in Makefile for more info.
1998-08-31 01:08:08 +00:00
jb
a945cbd015 Build objformat on all architectures. 1998-08-18 12:52:51 +00:00
bde
ef03aa72b3 Fully enable the optimization of not building dependencies unless NOCLEAN
is set.  It was disabled in the -j case.  See rev.1.173.
1998-08-04 17:13:38 +00:00
peter
d0cf6313ba Descend into etc always; src/etc/sendmail/Makefile has make.conf hooks
for building and installing a local sendmail.cf..

I'm a little nervous about the implications of having an obj dir built
under etc (to get to the obj dir for sendmail), but the make rules appear
to DTRT.
1998-08-04 16:00:47 +00:00
bde
c4e1dd04fb Fixed building -current under 2.2.6 using `make world'. Moved some
recently added definitions from sys.mk to bsd.own.mk.  Include the
src-relative bsd.own.mk in src/Makefile to pick up all new definitions.
Don't check that MACHINE_ARCH is defined in src/Makefile, since it is
(and should have been) guaranteed to be defined.
1998-08-03 08:28:14 +00:00
wosch
d2d8dfe1c5 Malformed conditional if MACHINE_ARCH is not defined. From rev 1.195. 1998-08-02 09:24:59 +00:00
bde
28e4ac2223 Oops, don't build tools for building games, etc. when we're not building
games, etc.

Define _BUILD_TOOLS in sub-makes for building tools.  This will be used
to avoid using uninstalled tools in colldef and mklocale.
1998-07-07 09:59:48 +00:00
bde
04e31c4a1d Build internal tools in build-tools so that they have some chance of
working when the target system is not binary compatible.  Use various
hacks to work around minor problems in the source and binary tree
layouts:
- caesar and strfile are built normally (the source layout is good),
  then installed by copying them to ${WORLDTMP}/usr/bin (they are
  installed in ${WORLDTMP}/usr/games, but I don't want to put that
  in $PATH).
- colldef and mklocale are built and installed normally.  Messy and
  incomplete relative path searches for them and caesar and strfile
  can now go away.
- internal tools that aren't installed are now built and left lying
  around for the `make all' pass to use.  If the target system is
  not binary compatible, it is critical that these tools don't get
  rebuilt.  Cleaning of the obj tree before building the internal
  tools should ensure this.
- most internal tools are built using internal build-tools targets,
  but tn3270 is simpler for a change - it has all the tools in a
  separate tree, so they can be built using `make all'.
1998-07-07 05:37:34 +00:00
bde
a7dfca09c3 Added yacc to the bootstrap tools. It is needed very early to
build at least compile_et and lex, and although almost any version
of yacc could work, the version in -stable doesn't actually work
with -current makefiles because it doesn't support -o.

Submitted by:	Ian Holland <ianh@tortuga.com.au>
1998-06-17 09:34:42 +00:00
peter
b2d1ceea52 join(1) is used by lorder, add it to build-tools. (otherwise, things get
ugly when an a.out /usr/bin/join sees the elf LD_LIBRARY_PATH from a
'make world' and it's a.out ld.so tries to load the elf libc.so.)
1998-06-13 02:03:36 +00:00
bde
cd35d4abdf Quick fixes for the mtree bootstrap:
- don't announce `mtree' as `mtools'.
- don't install to ${DESTDIR}/usr/sbin (which often doesn't exist if
  DESTDIR is set and may be read-only if DESTDIR is not set).
- install to (${WORLDTMP}/usr/sbin so that the new mtree is actually
  in $PATH if DESTDIR is set.
- don't use the host make or the host sys.mk.  This is probably
  unimportant.
- use a temporary obj dir like the one for `make'.  This was mainly
  necessary because I forgot to remove the MAKEOBJDIRPREFIX unsetting
  which was just a bug for mtree.  A non-quick fix would handle mtree
  more like a bootstrap tool (the only additional complications are to
  create ${BINDIR} and avoid excessive cleaning).  Except a non-quick
  fix would change much more.
1998-06-09 07:19:13 +00:00
sos
c19c19de29 Compile mtree before it is used, this is a hack, but make world has
failed since new functionality was introduced in mtree.
1998-06-07 10:50:28 +00:00
jkoshy
676233ef27 -DALLLANG is now obsolete in "src/Makefile"; move to "src/release/Makefile".
PR: 6685
1998-06-06 04:39:42 +00:00
bde
b1fe1cc67c Don't run the target's ldconfig or build it as a tool. If target == host
(in particular, if DESTDIR is empty or "/"), then the host's ldconfig will
be the target's ldconfig by the time it is run.

Fixed disordering of env.

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

Don't build strip twice.
1998-06-06 01:13:21 +00:00
bde
55772ed9c6 Fixed bogotification of the lex bootstrap in rev.1.186 and the previous
commit - don't wander off to bootstrap mtree and include in the middle
of bootstrapping lex, and don't forget what we were doing and build
some lex obj dirs twice.
1998-06-06 00:56:23 +00:00
jkh
e6bdbe311c Add mtree to bootstrap targets now that peter has added a new
keyword to it which will otherwise call the next target to fall over
on transitioning systems.
1998-06-05 16:50:45 +00:00
jb
08171730de Build aout bootstrap tools only on i386.
`make world' now works on alpha!
1998-06-04 12:02:52 +00:00
charnier
4892ab73e5 Typos. 1998-06-04 06:25:22 +00:00
jhay
9a2ca3371a Don't build perl in build-tools: if NOPERL is defined. 1998-06-02 18:28:55 +00:00
peter
9b3fd83b9e Fix brain-fart. "usr.bin/reinstall" should be "sbin/ldconfig".
No comment. *-<:-)

Submitted by:	"Pierre Y. Dampure" <pierre.dampure@k2c.co.uk>
1998-06-02 11:22:08 +00:00
peter
c1db59662a ldconfig is used at the end of installworld. 1998-06-01 18:29:11 +00:00
jhay
7f2993c7fe Add a test to see if the secure directory exists, before deciding which
crypt library should be used when building bootstrap-libraries. This
make it work on machines that don't have the secure directory.
Thanks to Paul Allenby <pallenby@mikom.csir.co.za> for bringing it to
my attention.
1998-05-30 07:32:28 +00:00
jkh
3121ab6679 Whoops! Committed the wrong version of that file - here's the one which
works.
1998-05-29 05:15:47 +00:00
jkh
fa9e386c33 Move sh after awk in build tools - sh requires awk to build. Add id
to list of bootstrap tools.
Submitted by:	jhay
1998-05-29 05:14:08 +00:00
peter
3e7c7f9c3c Only pre-build the "default" libcrypt, since it gets to set the symlinks
for the rest of the build.  I'm not certain, but I think this determines
which crypt() goes into /sbin/init.  This change shouldn't hurt anyway. :-)

Based on a suggestion by: bde
1998-05-28 13:20:35 +00:00
peter
c31bdd1317 Urgent fix for bootstrap target. If the old symlinks are pointing to the
real source tree, the bootstrap target would attempt have cpio copy the
files over themselves, unlinking them first.  I think this only happened
with make -DNOCLEAN world at the transition between a symlinked
objdir/tmp/usr/include/{sys,net,..} and real files.
1998-05-28 12:31:42 +00:00
peter
f9b1d08171 Replace the partial symlink tree to src/sys/* in $OBJDIR/tmp/usr/include
with real copies.  I'm sick of !@#&!^!@#*& mtree chowning directories in
my src/sys/* tree after it follows the symlinks.  I still believe that
mtree is broken for doing this (introduced in mtree.c rev 1.5).
1998-05-27 18:50:01 +00:00
peter
53e563399c On the other hand, when /usr/bin/as is really a link to objformat, it's not
helpful to stop it running /usr/libexec/aout/as for real while bootstrapping.
Only force a strict path when we really have built all the tools in
$OBJDIR/tmp/usr/libexec/*.
1998-05-27 16:33:43 +00:00
peter
ab6173c22c Move objformat after binutils, otherwise we get chicken/egg problems when
building ELF.  It may be that binutils and objformat need to both be moved
earlier in the list though, but that can wait till the dust settles.
1998-05-27 15:40:35 +00:00
sos
327c9c51a0 Compile & use objformat as it was intended to, I have no idea why
that failed for me before :(
1998-05-27 07:59:37 +00:00
sos
bc60c8025e ELF preparation step 2:
Move a.out libraries to /usr/lib/aout to make space for ELF libs.
Make rtld usr /usr/lib/aout as default library path.
Make ldconfig reject /usr/lib as an a.out library path.
Fix various Makefiles for LIBDIR!=/usr/lib breakage.

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

We are getting close to an ELF make world, but I'll let this
all settle for a week or two...
1998-05-26 20:12:56 +00:00
sos
ea8b97a093 ELF preparation step 1:
Move our old a.out utils to /usr/libexec/aout.
Enable binutils and put the utils in /usr/libexec/elf
Enable objformat, a little helper program that calls the right
utils based on /etc/objformat and $OBJFORMAT.

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

Problem left to solve: The BSD manpages wins over the GNU equivalents
as the are installed last. We need to distinguish between the manpages
somehow...
1998-05-25 17:34:42 +00:00
jb
dc998b817d Make perl a build tool since it is required during a make depend.
This should fix the problem people have been having with perl/usub.
1998-05-18 03:28:02 +00:00