Commit Graph

355 Commits

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

Reviewed by:	phk
MFC after:	4 weeks
2008-12-27 15:07:51 +00:00
alfred
4081b776af Provide a 'tinderbox' target that compiles enough of FreeBSD that
a developer can rest reasonably assured that the tinderbox will not
be broken.  This target leverages most of 'universe' but will exit
non-zero and output a summary at the end.

"make tinderbox"
2008-12-01 00:45:51 +00:00
des
315e1d3a3c Change the universe target to warn the user for every world or kernel that
fails.  The error message includes a reference to the relevant log file.

Approved by:	phk
MFC after:	1 week
2008-11-24 11:23:14 +00:00
bz
a786ca56c9 Back out rev. 1.352 (SVN rev 179842) as phk pointed out that
SRCCONF was omitted here to be able to build non standard trees
with universe as well.
2008-06-17 11:08:49 +00:00
bz
e772b82d0b For make universe, in addition to make.conf, also ignore a
src.conf with possibe non-default options.

Reviewed by:	ru
MFC after:	10 days
2008-06-17 09:06:46 +00:00
jb
e75a451fc0 Backout the change to remove sun4v.
Note that sun4v is currently broken on T2000 hardware so it's pretty
much a lame duck at this point.
2008-05-25 22:13:17 +00:00
jb
8ea302a3db Remove sun4v from the list of arches in 'make universe'. There has been
no active development on it for over a year now and it isn't
reliable under a simple buildworld. Developers can't be expected to
test code targeted for it.
2008-05-25 02:48:57 +00:00
jb
e78530f9ea Add a knob to allow just the kernels to be built during a 'make universe'.
This is useful when wanting to retry a broken build using NOCLEAN and the
buildworlds are known to have completed.
2008-05-23 04:20:59 +00:00
rwatson
b02f65b649 Mention -U and -ai arguments to mergemaster in a comment for the
general mergemaster line.

MFC after:	3 days
Suggested by:	Ben Laurie
2008-04-29 09:08:33 +00:00
pav
2b290549e3 Double up the necessary size of /usr/obj to 800MB
PR:		misc/99735
Reported by:	Philip M. Gollucci <pgollucci@p6m7g8.com>,
		Maxim Konovalov <maxim@macomnet.ru>
2008-03-31 13:32:55 +00:00
ru
771a69438e Add code that should catch the most common case when date/time is
set incorrectly.
2008-03-25 15:47:22 +00:00
jhb
b3bca4a1b7 Add a note pointing to build(7) for more info.
MFC after:	1 week
Reviewed by:	ru
2008-01-30 19:33:18 +00:00
imp
8b217e6eca We don't need to invent BSDMAKE. ${MAKE} is sufficient.
Submitted by: jmallet@
2007-12-13 00:08:02 +00:00
imp
aec3ebc791 Don't assume that make(1) is a bsd-like make program. It might not be. This
only matters in the early stages of bootstrapping, of course, but gnu make can't
handle bsd make Makefiles at all if they use any of the 'dot' directives, which
src/Makefile has in abudnance.
2007-12-11 20:00:55 +00:00
delphij
a7e0dd3928 Do not bail out for cleanworld target just because
chflags is failed.
2007-10-18 08:41:52 +00:00
des
5e9f952e4c Expose all of {check,delete}-old{,-dirs,-files,-libs}.
MFC after:	3 weeks
2007-05-16 08:46:35 +00:00
marcel
5f0f57215b Introduce a variable TARGETS that can be set on the make command line
and that controls which platforms are being built as part of a "make
universe". By default TARGETS is set to the 8 platforms currently
being built. This variable is useful for running or re-running a
"make universe" with only a selected set of platforms. This makes the
universe target slightly more useful in cases the universe is limited
to a developer's scope or objectives. For example, when a universe
failed for a particular platform and fixes need to be tested for that
particular platform then a developer can restart the universe for
only that platform, even if the initial universe is still building
other platforms.
2007-04-02 21:32:44 +00:00
ru
6ea883cd0b Add arm to universe. 2006-11-28 01:03:29 +00:00
jb
a8f497ff90 Remove the NO_CTF option. It would have been required to support
DTrace.
2006-11-21 08:25:28 +00:00
jb
7f880f15f4 When building an upgraded make, don't worry about processing it for
use with DTrace because the normal buildworld will do that when the
tools are built.
2006-11-01 09:05:40 +00:00
jb
c0e6d5e665 Add sun4v to the 'universe'. 2006-10-16 22:18:59 +00:00
ru
1274e5767f In "make universe", utilize simplified cross-build synopsis,
"make TARGET=<machine> build*", now that it actually works.

Prompted by:	imp
2006-09-08 10:13:15 +00:00
imp
8734146d90 Per weak consensus on this topic, remove suggestion to set
HISTORICAL_MAKE_WORLD from the text that's output.  This was committed
against the previous consensus.  Leave the documentation in this file
as a compromose.  The HISTORICAL_MAKE_WORLD knob is intentionally
obfuscated and we only trust people smart enough to read the Makefile
to use it.  All others have no business using it due to its danger,
unless DESTDIR is set.

Dissentors: grog, obrien, trhodes
2006-06-22 16:52:53 +00:00
obrien
39e51502f7 Note a short-cut in the build procedure. 2006-06-21 09:53:42 +00:00
trhodes
20e391b445 Simply running ``make world'' will bomb unless you dig up the
undocumented HISTORICAL_MAKE_WORLD variable and set it.  Note it
here so the blow up will not really be a surprise to people who
read.

Link the buildingworld chapter of our handbook in the README
while I'm here.
2006-06-07 03:33:48 +00:00
imp
f22f333d75 Create a new target 'buildenvvars'. This target reports the build
environment for cross building (the same one you'd get interactively
in make buildenv).  This cannot be a simple

        make -f Makefile.inc1 -V WMAKEENV

because in PATH is not set correctly unless one takes a trip through
the Makefile/Makefile.inc1 indirection, the logic of which is too
large to reproduce outside of Makefiles.
2006-06-06 16:24:54 +00:00
netchild
e14fcb8fd5 Connect the kernel subsystem API documentation generation framework to
the build infrastructure: "make doxygen"

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

Requested by:	gnn
2006-05-26 18:10:06 +00:00
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