Commit Graph

212 Commits

Author SHA1 Message Date
John Birrell
11a09d8243 Add the clean cleandepend and cleanobj targets back. 1998-09-01 05:53:00 +00:00
John Birrell
11fb97daa7 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
John Birrell
cf5656e831 Build objformat on all architectures. 1998-08-18 12:52:51 +00:00
Bruce Evans
fba6da925d 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 Wemm
6697f53652 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
Bruce Evans
cf94fb2124 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
Wolfram Schneider
0ae9a94ad1 Malformed conditional if MACHINE_ARCH is not defined. From rev 1.195. 1998-08-02 09:24:59 +00:00
Bruce Evans
1d86f959b6 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
Bruce Evans
274068262c 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
Bruce Evans
6943ec8018 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 Wemm
e2fea9c587 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
Bruce Evans
70c9f9745b 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
Søren Schmidt
f55eda8752 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
Joseph Koshy
8f24c56371 -DALLLANG is now obsolete in "src/Makefile"; move to "src/release/Makefile".
PR: 6685
1998-06-06 04:39:42 +00:00
Bruce Evans
00ef38360e 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
Bruce Evans
9e3b9b4d1c 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
Jordan K. Hubbard
7c780e8edc 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
John Birrell
4460041351 Build aout bootstrap tools only on i386.
`make world' now works on alpha!
1998-06-04 12:02:52 +00:00
Philippe Charnier
ad6833e475 Typos. 1998-06-04 06:25:22 +00:00
John Hay
e4b5626a5c Don't build perl in build-tools: if NOPERL is defined. 1998-06-02 18:28:55 +00:00
Peter Wemm
1b53d90e9c 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 Wemm
c6bf2e4947 ldconfig is used at the end of installworld. 1998-06-01 18:29:11 +00:00
John Hay
f40a876b02 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
Jordan K. Hubbard
78beb0d5bd Whoops! Committed the wrong version of that file - here's the one which
works.
1998-05-29 05:15:47 +00:00
Jordan K. Hubbard
873e845673 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 Wemm
215c9a37c5 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 Wemm
452bbab387 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 Wemm
6f9fb94ec8 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 Wemm
090fc16472 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 Wemm
1907cbbd35 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
Søren Schmidt
dfd93f4d1d 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
Søren Schmidt
cabb97dcbf 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
Søren Schmidt
77dfb966d9 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
John Birrell
0c2e53a8b0 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
John Birrell
86f9ecbad4 Now that FreeBSD/Alpha can be installed on a disk and run on its own,
a bootstrap build under NetBSD is an option.

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

This is one of the fixes for the bug suite that caused `make world'
to sometimes put raw cpp output in .depend files.  Building of cc
sometimes failed, but the failure did not terminate the build
immediately, and various wrong versions of the cc components were
used until one was wrong enough to cause a fatal error.
1998-05-15 17:12:00 +00:00
Bruce Evans
b709987938 Removed share/info from build-tools. It should never have been there,
and became redundant when it was put in SUBDIR, and became bogus when
WORLDTMP was introduced, and became broken when INFODIR was introduced.

PR:		6138
1998-05-10 16:51:07 +00:00
John Birrell
a6919ef89d Fix the problem people are having building -current on a -stable system.
The headers that are installed in WORLDTMP are part of the interface
that includes libraries like libc, so they must be installed together.
This means that lib-tools and build-tools should be merged. The FreeBSD
build only works in hosted form where it is assumed that the installed
version contains adequate tools to build the latest release.
1998-05-08 21:29:35 +00:00
Bruce Evans
e66437e7a9 Added patch to build-tools (now needed to make gdb, sigh).
Pointed out by:	andreas
1998-05-02 12:29:48 +00:00
Bruce Evans
1c9df6b435 Don't build dependencies unless NOCLEAN is set. This speeds up
`make world' by about 14% here (down to 4490 seconds real on a
K6/233).  Temporarily skip this optimization when building with
-j, since there are still many broken makefiles.

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

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

Don't install library man pages in ${WORLDTMP}.
1998-04-27 16:21:33 +00:00
Jordan K. Hubbard
29c03682fa Use more reasonable defaults for SUP variables (and print them
correctly) now that sup is long since dead and buried.
1998-04-26 08:40:25 +00:00
Andreas Klemm
3f99ca5351 make includes has to execute "make beforeinstall" in src/lib/libcalendar
as well, otherwise "make depend" during "make buildworld" fails in
usr.bin/ncal
1998-04-25 14:32:22 +00:00
Bruce Evans
29844c8f14 Don't build shared libraries twice for `make world'. This reduces
`make world' times by about 10%.  Use a new `bootstrap-libraries'
target to build just enough (static) libraries to bootstrap the
tools, and delay building of shared libraries until all the tools
have been built.

Fixed `/usr/bin/make world'.  The version of `make' that we buildis
nand use is named "make", not ${MAKE}.
1998-04-24 17:13:33 +00:00
Dmitrij Tejblum
878739de43 Cosmetic: put '@' in front of a very long command. 1998-04-19 13:44:52 +00:00
Mark Murray
5019f318e8 Make the decision to compile kerberosIV a bit more secure by looking
for the appropriate directory.
1998-03-26 17:32:24 +00:00
Bruce Evans
47e0b716cb Build the initial `make' in the temporary build tree so that its forced
cleaning doesn't affect the normal copy.  Save a little time by not doing
unnecessary clean, depend nd cleandepend steps.

Reviewed by:	mckay@freebsd.org

Added xargs to build-tools.  It may be used for kdump and truss.
1998-03-19 16:43:19 +00:00
Bruce Evans
279e998173 Restored an (apparently unnecessary) -B for installing lib-tools.
The install target is -j-unsafe in general, so we use -B for
installing everything in `make world'.
1998-03-16 11:58:46 +00:00
Bruce Evans
42fce6372e Don't force NOPIC for building tools at all for now, so that some
(slightly stale) shared libraries get installed before non-tools
are linked.  The 2-stage build of the libraries has never really
worked, since we link to the libraries built in the first stage.
1998-03-15 04:52:58 +00:00
Bruce Evans
ff85458032 Don't force NOPIC or NOSHARED for building tools in the NOCLEAN case,
so that dirtier-than-previously tools aren't left lying around to be
installed.

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

Fixed a literal "make".
1998-03-14 13:58:21 +00:00
Bruce Evans
13a8a44971 Build all tools shared, and don't build any shared libraries for tools.
Build libraries (for linking the tools to) in a more correct order
(for linking freshly created shared libraries to each other).  This
is probably a no-op now that shared libraries for tools aren't
built, but I didn't test any intermediate versions.  Security-related
directories that are not built by default may now be misordered
for the shared case.

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

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

Test for library directories actually being built, not for directories
above them.
1998-03-13 09:41:58 +00:00