Commit Graph

295 Commits

Author SHA1 Message Date
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