NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
What is BSD make?
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.
I've found it's VERY interesting and in many aspect much better than
GNU make. But I have a few questions about it. Some are about history.
1) Here http://en.wikipedia.org/wiki/Make_(software) there is interesting
information about history of make utility.
But this history ends with
* BSD make, which is derived from Adam de Boor's work on a version
of make capable of building targets in parallel, and survives
with _varying degrees of modification_ in FreeBSD, NetBSD and
OpenBSD.
So the very first question is "What exactly is BSD make?" How
different FreeBSD/NetBSD and OpenBSD make utilities are? Do
appropriate *BSD teams try to keep their make as compatible as
possible or not.
2) Another question is "What is pmake?"
If I understand correctly this page
http://www.freebsd.org/doc/en/books/pmake/index.html
describes that common ancestor of all *BSD makes without any extensions.
pmake is also 4.4BSD make utility and also "parallel make". Right?
hint: In many Linux distros pmake package is available and is
actually a rather old version of 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.
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 :-(
4) Recently I've found that FreeBSD and NetBSD MK scripts
are also a bit different. They build shared libraries
differently, for examples (I have no access to OpenBSD).
The question is (rhetorical again) is there reason for *BSD developers
to have their own extensions to MK scripts incompatible with others'.
Why not to have one common MK scripts for all their makes and systems.
Different and incompatible mk scripts make general purpose
development using these scripts painful. But I think that
potential for MK script is very big.
5) Here http://www.crufty.net/ftp/pub/sjg/ I've found different MK
scripts (devel/mk-files), fork of NetBSD mk files. Is Simon
J. Gerraty <sjg%NetBSD.org@localhost> the only developer of these scripts?
Are these scripts completely independeant from NetBSD and pkgsrc
development?
6) pkgsrc pkgtools/bootstrap-mk-files is yet another place for mk
files. Are these scripts completely independent from NetBSD mk
files and those by sjg%NetBSD.org@localhost?
Or they synced periodically? Where is upstream for
pkgtools/bootstrap-mk-files? Are these scripts distributed as
separate tarball anywhere? What is relation between
pkgtools/bootstrap-mk-files and devel/mk-files?
7) mk files from pkgtools/bootstrap-mk-files supports
building shared libraries
by setting SHLIB_MAJOR etc.
It is well known that different compilers and different OSes
have their own way to create .so/.dynlib/.dll etc.
Currently only gcc is supported (-shared is hardcoded in bsd.lib.mk).
This is where libtool/autoconf/automake comes into play in GNU
world, but I don't like this _approach_. Declarative Makefiles
seems much better to me. Like this one.
PROG= mylib
SRCS= 1.c 2.c 3.c
SHLIB_MAJOR= 1
SHLIB_MINOR= 0
SHLIB_TEENY= 4
.include <bsd.lib.mk>
This is already implemented but only for GCC.
What about support for other compilers and platforms? It whould be nice
build libraries like this
bmake all COMPILER_TYPE=sunc
I think idea is clear. I'm talking about crossplatform general
purpose development using BSD make (or NetBSD make) and MK scripts.
8) The same as 7) for pthread support. It whould be nice to write Makefile
like this
PROG= hello
NEED_PTHREAD= yes
.include <bsd.prog.mk>
Compiler's and linker's options should be added automatically,
e.g. -pthread.
9) I'm looking for system (replacement for automake/libtool/make)
where I can write declarative Makefiles, just like that I can write
with <bsd.*.mk> scripts and BSD makes, but with problems mentioned
above solved. Any suggestions? I don't want to reimplement the
wheel and implement such scripts manually.
--
Best regards, Aleksey Cheusov.
Home |
Main Index |
Thread Index |
Old Index