NetBSD-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: What is BSD make?



On Sat, Oct 11, 2008 at 03:29:02PM +0300, Aleksey Cheusov wrote:
> After years of development using GNU make under Linux I switched my
> home workstation to NetBSD. Here I've found a number of interesting
> things. One of them is NetBSD make.
> 
> 3) In my view bsd.*.mk scripts is a main thing about BSD make. It is
>    really amazing thing and may be much more important than make itself.
>    I believe that MK scripts with _some extensions and additions_
>    may be excellent replacement for GNU make + automake + libtool.
> 
>    I really love declarative nature in writing Makefiles, I like this
>    approach and think that things like automake/libtool must die.

I agree 100%. The Makefiles are short, elegant and the system itself
does not require so much overhead as most of the GNU tools do. In fact,
it's already installed on all my systems :)

>    The question is (rhetorical again) why BSD makes are used mainly to
>    build respective *BSD systems and not used by software developers
>    outside *BSD. That is, why BSD make and especially MK scripts are
>    promoted so badly :-(

One thing that might be lacking is good documentation; I've found almost
no documentation about the .mk system.  I wrote down a few notes and
put those on the wiki some time ago: http://wiki.netbsd.se/BSD_Make
and http://wiki.netbsd.se/Basic_Unix_programming#Using_BSD_Make
but those are just some quick incoherent notes; a poor substitute for
real documentation.

I think the biggest problem with BSD make currently is that it's very
unportable. There are dozens of variants out there, all with slight
incompatibilities. If you distribute a Real Program that uses BSD Make
with the .mk files as its build system, it will only build on the BSD
that you wrote it on. Since each of the individual BSDs are by
themselves relatively small players on the Unix market, this is
unrealistic for a large program that should run on many Unix systems.
A coordinated effort to make The One BSD Make to Rule Them All could
solve this problem, but I'm not sure if that's doable since the
rulesets are (AFAIK) pretty system-specific.

For these reasons, I only use BSD Make for small personal projects that
are not released. I also use LaTeX-mk (in pkgsrc as print/latex-mk) for
my LaTeX projects, which adds LaTeX-specific rules to BSD Make (but
also includes a gmake ruleset). I'd love to be able to use BSD Make for
other projects as well.

Cheers,
Peter
-- 
http://sjamaan.ath.cx
--
"The process of preparing programs for a digital computer
 is especially attractive, not only because it can be economically
 and scientifically rewarding, but also because it can be an aesthetic
 experience much like composing poetry or music."
                                                        -- Donald Knuth

Attachment: pgpGiR3d4db1v.pgp
Description: PGP signature



Home | Main Index | Thread Index | Old Index