お手軽Makefile #10

bsd.prog.mkの話を延々してきたけど、これはもちろんNetBSDで各プログラムをコンパイルするのに使われている。以下適当に見繕って挙げてみる。
lsの場合。

$ cd /usr/src/bin/ls
$ ls
CVS/            extern.h        ls.h            stat_flags.c
Makefile        ls.1            main.c          stat_flags.h
cmp.c           ls.c            print.c         util.c
$ cat Makefile
#       $NetBSD: Makefile,v 1.13 2001/11/03 13:40:30 lukem Exp $
#       @(#)Makefile    8.1 (Berkeley) 6/2/93

PROG=   ls
SRCS=   cmp.c ls.c main.c print.c stat_flags.c util.c

CFLAGS+= -DCOLORLS
LDADD+= -ltermcap

.include <bsd.prog.mk>

duの場合。

$ cd /usr/src/usr.bin/du
$ ls
CVS/            Makefile        du.1            du.c
$ cat Makefile
#       $NetBSD: Makefile,v 1.7 1995/09/28 06:24:35 perry Exp $
#       @(#)Makefile    8.1 (Berkeley) 6/6/93

PROG=   du

.include <bsd.prog.mk>

findの場合。

$ cd /usr/src/usr.bin/find
$ ls
CVS/            find.1          find.h          main.c          option.c
Makefile        find.c          function.c      misc.c
extern.h        find.cat1       ls.c            operator.c
$ cat Makefile
#       $NetBSD: Makefile,v 1.8 1999/01/03 14:54:27 lukem Exp $
#       from: @(#)Makefile      8.1 (Berkeley) 6/6/93

PROG=   find
SRCS=   find.c function.c ls.c main.c misc.c operator.c option.c stat_flags.c

CPPFLAGS+=      -I${.CURDIR}/../../bin/ls
.PATH:  ${.CURDIR}/../../bin/ls

.include <bsd.prog.mk>

それからついでなんだけど、例えばlsをデバッグオプション付きでコンパイルしたいんだど…‥って場合には、以下のように実行すればよい。

$ cd /usr/src/bin/ls
$ ls
CVS/            extern.h        ls.h            stat_flags.c
Makefile        ls.1            main.c          stat_flags.h
cmp.c           ls.c            print.c         util.c
$ DBG=-g make
...
$ ls
CVS/            extern.h        ls.cat1         main.o          stat_flags.h
Makefile        ls*             ls.h            print.c         stat_flags.o
cmp.c           ls.1            ls.o            print.o         util.c
cmp.o           ls.c            main.c          stat_flags.c    util.o
$ file ls
ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for NetBSD, static
ally linked, not stripped

やっぱりNetBSDのソースを読むにはbsd.prog.mkを知ってなきゃダメだと思う。