*BSD News Article 87696


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.carno.net.au!harbinger.cc.monash.edu.au!news.rmit.EDU.AU!news.unimelb.EDU.AU!munnari.OZ.AU!news.mel.connect.com.au!news.mel.aone.net.au!grumpy.fl.net.au!news.webspan.net!www.nntp.primenet.com!nntp.primenet.com!feed1.news.erols.com!howland.erols.net!nntp.crl.com!ecf2.puc.edu!news5.crl.com!nexp.crl.com!usenet
From: "Jordan K. Hubbard" <jkh@FreeBSD.org>
Newsgroups: comp.os.linux.misc,comp.unix.bsd.bsdi.misc,comp.unix.bsd.misc
Subject: Re: Linux vs BSD
Date: Tue, 28 Jan 1997 12:27:19 -0800
Organization: Walnut Creek CDROM
Lines: 54
Message-ID: <32EE6127.41C67EA6@FreeBSD.org>
References: <32DFFEAB.7704@usa.net> <5c39sk$ddl@troma.rv.tis.com> <5c8jlm$50u@cynic.portal.ca> <5c9444$9vq@lace.colorado.edu> <5c98sl$gbn@cynic.portal.ca> <5ckluo$mbl@josie.abo.fi>
NNTP-Posting-Host: time.cdrom.com
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mailer: Mozilla 3.01 (X11; I; FreeBSD 3.0-CURRENT i386)
To: mandtbac@abo.fi
Xref: euryale.cc.adfa.oz.au comp.os.linux.misc:154803 comp.unix.bsd.bsdi.misc:5771 comp.unix.bsd.misc:2081

Mats Andtbacka wrote:
> yes, that's basically the arrangement. whether or not this is a good
> thing depends, i suspect, on taste: i would claim that the *BSD
> concept of one "make" in one tree does everything, while certainly
> convenient, is more suitable to people somewhat afraid of their
> compiler. less, after all, to compile, or so it appears to the person
> just typing one "make".

Ooh, that was just too simplistic an assumption to let pass by.

There's a lot more to the BSD build system than meets the eye, and it's
not just a question of how the source tree is physically arranged.  You
could make it flat or you could make it 57 layers deep and it wouldn't
have anything to do with what I'm talking about when I say "build
system."

BSD make, at the expense of a few blatant assumptions about where its
macro files live (/usr/share/mk), does a lot to provide consistent build
framework for the sources under its care - if you want to compile the
entire system at optimization level of 03, or without debugging
information, or with every tool which was formerly linked shared now
static (just to name a very small number of possibilities), it's a
trivial command line option.  You don't have to edit any files and you
don't have to keep track of any special configuration details for
individual tools.  It's very simple to drive and I can reserve precious
cerebral storage space for memorizing other more important things, it
has nothing to do with fear of the compiler. :-)

BSD Makefiles tend to be extremely concise as a result of this and very
easy to read.  I've done some positively facinating stuff with GNU make,
and I'd never say it wasn't a powerful alternative, but "concise" is
never a word I've applied to the GNU makefile for any tool integrated
with a large system (it's easy to make small gmake files, yes, but I'm
talking about what happens once you add all the "knobs and levers").  I
was very pleasantly surprised when I first encountered the BSD make
system and saw how configurable it was without the usual accompanying
hair.

> granted, the *BSD object directory system is worth drooling over, i'd
> love to see that in many Linux sources - not least the kernel. but i'd

I'd also like to say that the FreeBSD tree will build just fine from a
read-only /usr/src (without an inode-eating link tree) as another
benefit of our build system, but a couple of ill-behaved tools still
attempt to write stuff in the wrong place.  It would be fairly easy to
fix if anyone cared that deeply. :-)

Also, pieces of the system can be elided from the build by turning
various flags on or off; it's not quite so boolean as you were afraid
of.

-- 
- Jordan Hubbard
  President, FreeBSD Project