xref: /titanic_41/usr/src/tools/quick/make-zfs (revision 4f4cb30ba3c6b5af6c9141b197634fbb900e60c3)
1*4f4cb30bSGordon Ross#!/bin/ksh
2*4f4cb30bSGordon Ross#
3*4f4cb30bSGordon Ross# This file and its contents are supplied under the terms of the
4*4f4cb30bSGordon Ross# Common Development and Distribution License ("CDDL"), version 1.0.
5*4f4cb30bSGordon Ross# You may only use this file in accordance with the terms of version
6*4f4cb30bSGordon Ross# 1.0 of the CDDL.
7*4f4cb30bSGordon Ross#
8*4f4cb30bSGordon Ross# A full copy of the text of the CDDL should have accompanied this
9*4f4cb30bSGordon Ross# source.  A copy of the CDDL is also available via the Internet at
10*4f4cb30bSGordon Ross# http://www.illumos.org/license/CDDL.
11*4f4cb30bSGordon Ross#
12*4f4cb30bSGordon Ross
13*4f4cb30bSGordon Ross#
14*4f4cb30bSGordon Ross# Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
15*4f4cb30bSGordon Ross#
16*4f4cb30bSGordon Ross
17*4f4cb30bSGordon Ross# Use distributed make (dmake) by default.
18*4f4cb30bSGordon Rossmake=${MAKE:-dmake}
19*4f4cb30bSGordon Ross
20*4f4cb30bSGordon RossCLOSED_IS_PRESENT=no
21*4f4cb30bSGordon Rossexport CLOSED_IS_PRESENT
22*4f4cb30bSGordon Ross
23*4f4cb30bSGordon Ross[ -n "$SRC" ] || {
24*4f4cb30bSGordon Ross  echo "SRC not set.  Run 'ws' or 'bldenv' first."
25*4f4cb30bSGordon Ross  exit 1
26*4f4cb30bSGordon Ross}
27*4f4cb30bSGordon Ross
28*4f4cb30bSGordon Rosscpu=`uname -p`
29*4f4cb30bSGordon Rosscase $cpu in
30*4f4cb30bSGordon Rossi386)
31*4f4cb30bSGordon Ross	x=intel
32*4f4cb30bSGordon Ross	mdb_arch="ia32 amd64"
33*4f4cb30bSGordon Ross	arch32=i86
34*4f4cb30bSGordon Ross	arch64=amd64
35*4f4cb30bSGordon Ross	;;
36*4f4cb30bSGordon Rosssparc)
37*4f4cb30bSGordon Ross	x=sparc
38*4f4cb30bSGordon Ross	mdb_arch=v9
39*4f4cb30bSGordon Ross	arch32=sparc
40*4f4cb30bSGordon Ross	arch64=sparcv9
41*4f4cb30bSGordon Ross	;;
42*4f4cb30bSGordon Ross*)  echo "Huh?" ; exit 1;;
43*4f4cb30bSGordon Rossesac
44*4f4cb30bSGordon Ross
45*4f4cb30bSGordon Ross################################################################
46*4f4cb30bSGordon Ross
47*4f4cb30bSGordon Rossbuild_tools() {
48*4f4cb30bSGordon Ross  test -f $SRC/tools/proto/root_i386-nd/opt/onbld/bin/genoffsets ||
49*4f4cb30bSGordon Ross    (cd $SRC/tools && $make install)
50*4f4cb30bSGordon Ross  (cd $SRC/common/mapfiles; $make install)
51*4f4cb30bSGordon Ross}
52*4f4cb30bSGordon Ross
53*4f4cb30bSGordon Rossclobber_tools() {
54*4f4cb30bSGordon Ross  (cd $SRC/tools && $make clobber)
55*4f4cb30bSGordon Ross  (cd $SRC/common/mapfiles; $make clobber)
56*4f4cb30bSGordon Ross}
57*4f4cb30bSGordon Ross
58*4f4cb30bSGordon Ross################################################################
59*4f4cb30bSGordon Ross
60*4f4cb30bSGordon Rossdo_hdrs() {
61*4f4cb30bSGordon Ross
62*4f4cb30bSGordon Rosstarg=$1
63*4f4cb30bSGordon Rossif [ "$targ" = clobber ]
64*4f4cb30bSGordon Rossthen
65*4f4cb30bSGordon Ross  (cd $SRC/uts && $make -k clobber_h)
66*4f4cb30bSGordon Ross  (cd $SRC/head && $make clobber)
67*4f4cb30bSGordon Rossfi
68*4f4cb30bSGordon Ross
69*4f4cb30bSGordon Rossif [ "$targ" = install ]
70*4f4cb30bSGordon Rossthen
71*4f4cb30bSGordon Ross  targ=install_h
72*4f4cb30bSGordon Ross
73*4f4cb30bSGordon Ross  # Just the parts of "make sgs" we need, and
74*4f4cb30bSGordon Ross  # skip them if they appear to be done.
75*4f4cb30bSGordon Ross  # ... stuff under $SRC
76*4f4cb30bSGordon Ross  test -f $SRC/uts/common/sys/priv_names.h ||
77*4f4cb30bSGordon Ross    (cd $SRC/uts && $make -k all_h)
78*4f4cb30bSGordon Ross
79*4f4cb30bSGordon Ross  test -f $SRC/head/rpcsvc/nispasswd.h ||
80*4f4cb30bSGordon Ross    (cd $SRC/head && $make -k install_h)
81*4f4cb30bSGordon Ross
82*4f4cb30bSGordon Ross  # ... stuff under $ROOT (proto area)
83*4f4cb30bSGordon Ross  test -d $ROOT/usr/include/sys ||
84*4f4cb30bSGordon Ross    (cd $SRC && $make rootdirs)
85*4f4cb30bSGordon Ross  test -f $ROOT/usr/include/sys/types.h ||
86*4f4cb30bSGordon Ross    (cd $SRC/uts && $make -k install_h)
87*4f4cb30bSGordon Ross  test -f $ROOT/usr/include/rpcsvc/daemon_utils.h ||
88*4f4cb30bSGordon Ross    (cd $SRC/head && $make install_h)
89*4f4cb30bSGordon Ross
90*4f4cb30bSGordon Ross  # always update the sys headers to be safe
91*4f4cb30bSGordon Ross  (cd $SRC/uts/common/sys && $make -k install_h)
92*4f4cb30bSGordon Ross
93*4f4cb30bSGordon Rossfi
94*4f4cb30bSGordon Ross
95*4f4cb30bSGordon Ross# Need some library headers too...
96*4f4cb30bSGordon Rossfor lib in \
97*4f4cb30bSGordon Ross  libbsm \
98*4f4cb30bSGordon Ross  libcmdutils \
99*4f4cb30bSGordon Ross  libcryptoutil \
100*4f4cb30bSGordon Ross  libdevid \
101*4f4cb30bSGordon Ross  libdiskmgt \
102*4f4cb30bSGordon Ross  libidmap \
103*4f4cb30bSGordon Ross  libpam \
104*4f4cb30bSGordon Ross  libsec \
105*4f4cb30bSGordon Ross  libscf \
106*4f4cb30bSGordon Ross  libshare \
107*4f4cb30bSGordon Ross  libuutil \
108*4f4cb30bSGordon Ross  libzpool \
109*4f4cb30bSGordon Ross  libzfs_core \
110*4f4cb30bSGordon Ross  libzfs \
111*4f4cb30bSGordon Ross  libzfs_jni
112*4f4cb30bSGordon Rossdo
113*4f4cb30bSGordon Ross  (cd $SRC/lib/$lib && $make $targ)
114*4f4cb30bSGordon Rossdone
115*4f4cb30bSGordon Ross  # Should fix the Makefile here so all_h or install_h works.
116*4f4cb30bSGordon Ross  (cd $SRC/lib/libzpool/$cpu && $make ../common/zfs.h)
117*4f4cb30bSGordon Ross}
118*4f4cb30bSGordon Ross
119*4f4cb30bSGordon Ross################################################################
120*4f4cb30bSGordon Ross
121*4f4cb30bSGordon Rossdo_kern() {
122*4f4cb30bSGordon Ross  case $1 in
123*4f4cb30bSGordon Ross  lint) targ=modlintlib ;;
124*4f4cb30bSGordon Ross  *) targ=$1 ;;
125*4f4cb30bSGordon Ross  esac
126*4f4cb30bSGordon Ross  (cd $SRC/uts/$x/zfs && $make $targ)
127*4f4cb30bSGordon Ross}
128*4f4cb30bSGordon Ross
129*4f4cb30bSGordon Ross################################################################
130*4f4cb30bSGordon Ross#
131*4f4cb30bSGordon Ross# Build all libraries used by the other targets in here.
132*4f4cb30bSGordon Ross#
133*4f4cb30bSGordon Ross# Run this once (at least) in each new workspace where you
134*4f4cb30bSGordon Ross# will run "make-zfs install", if you want to avoid linking
135*4f4cb30bSGordon Ross# against the libraries from your build host.
136*4f4cb30bSGordon Ross#
137*4f4cb30bSGordon Rossdo_deplibs() {
138*4f4cb30bSGordon Ross
139*4f4cb30bSGordon Ross# install all the lib headers
140*4f4cb30bSGordon Rossif [ "$1" = install ] ; then
141*4f4cb30bSGordon Ross  (cd $SRC/lib && $make install_h)
142*4f4cb30bSGordon Rossfi
143*4f4cb30bSGordon Ross
144*4f4cb30bSGordon Ross# Wow, building libc takes a while.  Really want that?
145*4f4cb30bSGordon Rossfor lib in \
146*4f4cb30bSGordon Ross	libc \
147*4f4cb30bSGordon Ross	libavl \
148*4f4cb30bSGordon Ross	libnvpair \
149*4f4cb30bSGordon Ross	libsec \
150*4f4cb30bSGordon Ross	libcmdutils \
151*4f4cb30bSGordon Ross	libdevinfo \
152*4f4cb30bSGordon Ross	libuutil \
153*4f4cb30bSGordon Ross	libbrand \
154*4f4cb30bSGordon Ross	libzonecfg \
155*4f4cb30bSGordon Ross	libinetutil \
156*4f4cb30bSGordon Ross	libdladm \
157*4f4cb30bSGordon Ross	libdlpi \
158*4f4cb30bSGordon Ross	libdiskmgt \
159*4f4cb30bSGordon Ross	libumem \
160*4f4cb30bSGordon Ross	libdisasm \
161*4f4cb30bSGordon Ross	libidmap \
162*4f4cb30bSGordon Ross	libdevid \
163*4f4cb30bSGordon Ross	libsaveargs
164*4f4cb30bSGordon Rossdo
165*4f4cb30bSGordon Ross  (cd $SRC/lib/$lib && $make $1)
166*4f4cb30bSGordon Rossdone
167*4f4cb30bSGordon Ross}
168*4f4cb30bSGordon Ross
169*4f4cb30bSGordon Ross################################################################
170*4f4cb30bSGordon Ross
171*4f4cb30bSGordon Rossdo_libs() {
172*4f4cb30bSGordon Ross
173*4f4cb30bSGordon Rossfor lib in \
174*4f4cb30bSGordon Ross  libavl \
175*4f4cb30bSGordon Ross  libcmdutils \
176*4f4cb30bSGordon Ross  libuutil \
177*4f4cb30bSGordon Ross  libzpool \
178*4f4cb30bSGordon Ross  libzfs_core \
179*4f4cb30bSGordon Ross  libzfs \
180*4f4cb30bSGordon Ross  libzfs_jni \
181*4f4cb30bSGordon Ross  pyzfs
182*4f4cb30bSGordon Rossdo
183*4f4cb30bSGordon Ross  (cd $SRC/lib/$lib && $make $1)
184*4f4cb30bSGordon Rossdone
185*4f4cb30bSGordon Ross(cd $SRC/lib/libshare && $make $1 PLUGINS=)
186*4f4cb30bSGordon Ross}
187*4f4cb30bSGordon Ross
188*4f4cb30bSGordon Ross################################################################
189*4f4cb30bSGordon Ross
190*4f4cb30bSGordon Rossdo_cmds() {
191*4f4cb30bSGordon Ross
192*4f4cb30bSGordon Rossfor cmd in \
193*4f4cb30bSGordon Ross  availdevs \
194*4f4cb30bSGordon Ross  isaexec \
195*4f4cb30bSGordon Ross  fstyp \
196*4f4cb30bSGordon Ross  zdb \
197*4f4cb30bSGordon Ross  zfs \
198*4f4cb30bSGordon Ross  zhack \
199*4f4cb30bSGordon Ross  zinject \
200*4f4cb30bSGordon Ross  zpool \
201*4f4cb30bSGordon Ross  ztest \
202*4f4cb30bSGordon Ross  zstreamdump \
203*4f4cb30bSGordon Ross  pyzfs
204*4f4cb30bSGordon Rossdo
205*4f4cb30bSGordon Ross  (cd $SRC/cmd/$cmd && $make $1)
206*4f4cb30bSGordon Rossdone
207*4f4cb30bSGordon Ross
208*4f4cb30bSGordon Rosscase $1 in
209*4f4cb30bSGordon Rossinstall)
210*4f4cb30bSGordon Ross  # mount programs need fslib.o
211*4f4cb30bSGordon Ross  (cd $SRC/cmd/fs.d/zfs && $make $1)
212*4f4cb30bSGordon Ross  # Build just the ZFS devfsadm module
213*4f4cb30bSGordon Ross  (cd $SRC/cmd/devfsadm/$cpu && $make SUNW_zfs_link.so \
214*4f4cb30bSGordon Ross    ${ROOT}/usr/lib/devfsadm/linkmod \
215*4f4cb30bSGordon Ross    ${ROOT}/usr/lib/devfsadm/linkmod/SUNW_zfs_link.so )
216*4f4cb30bSGordon Ross  ;;
217*4f4cb30bSGordon Rossclean|clobber)
218*4f4cb30bSGordon Ross  (cd $SRC/cmd/fs.d/zfs && $make clobber)
219*4f4cb30bSGordon Ross  (cd $SRC/cmd/fs.d && $make ${1}_local)
220*4f4cb30bSGordon Ross  (cd $SRC/cmd/devfsadm && $make $1)
221*4f4cb30bSGordon Ross  ;;
222*4f4cb30bSGordon Rossesac
223*4f4cb30bSGordon Ross
224*4f4cb30bSGordon Ross(cd $SRC/cmd/syseventd/modules/zfs_mod && $make $1)
225*4f4cb30bSGordon Ross
226*4f4cb30bSGordon Ross# Build the MDB modules, WITH the linktest
227*4f4cb30bSGordon Ross(cd $SRC/cmd/mdb/tools && $make $1)
228*4f4cb30bSGordon Rossfor a in $mdb_arch
229*4f4cb30bSGordon Rossdo
230*4f4cb30bSGordon Ross  case $1 in
231*4f4cb30bSGordon Ross  install|lint)
232*4f4cb30bSGordon Ross    (cd $SRC/cmd/mdb/$x/$a/kmdb &&
233*4f4cb30bSGordon Ross	$make kmdb_modlinktest.o )
234*4f4cb30bSGordon Ross    ;;
235*4f4cb30bSGordon Ross  clean|clobber)
236*4f4cb30bSGordon Ross    (cd $SRC/cmd/mdb/$x/$a/kmdb &&
237*4f4cb30bSGordon Ross	$make -k $1 )
238*4f4cb30bSGordon Ross    ;;
239*4f4cb30bSGordon Ross  esac
240*4f4cb30bSGordon Ross
241*4f4cb30bSGordon Ross  (cd $SRC/cmd/mdb/$x/$a/zfs &&
242*4f4cb30bSGordon Ross	$make $1 KMDB_LINKTEST_ENABLE= )
243*4f4cb30bSGordon Ross
244*4f4cb30bSGordon Ross  (cd $SRC/cmd/mdb/$x/$a/libzpool &&
245*4f4cb30bSGordon Ross	$make $1 )
246*4f4cb30bSGordon Ross
247*4f4cb30bSGordon Rossdone
248*4f4cb30bSGordon Ross}
249*4f4cb30bSGordon Ross
250*4f4cb30bSGordon Ross################################################################
251*4f4cb30bSGordon Ross
252*4f4cb30bSGordon Rossdo_mans() {
253*4f4cb30bSGordon Ross
254*4f4cb30bSGordon Ross  case "$1" in
255*4f4cb30bSGordon Ross  install)
256*4f4cb30bSGordon Ross    (cd $SRC/man/man1m && make \
257*4f4cb30bSGordon Ross      $ROOT/usr/share/man/man1m/zdb.1m \
258*4f4cb30bSGordon Ross      $ROOT/usr/share/man/man1m/zfs.1m \
259*4f4cb30bSGordon Ross      $ROOT/usr/share/man/man1m/zpool.1m )
260*4f4cb30bSGordon Ross    (cd $SRC/man/man5 && make \
261*4f4cb30bSGordon Ross      $ROOT/usr/share/man/man5/zpool-features.5 )
262*4f4cb30bSGordon Ross    ;;
263*4f4cb30bSGordon Ross  lint)
264*4f4cb30bSGordon Ross    (cd $SRC/man/man1m && make zdb.1m.check zfs.1m.check zpool.1m.check)
265*4f4cb30bSGordon Ross    (cd $SRC/man/man5 && make zpool-features.5.check)
266*4f4cb30bSGordon Ross    ;;
267*4f4cb30bSGordon Ross  *)
268*4f4cb30bSGordon Ross    (cd $SRC/man/man1m && make $1)
269*4f4cb30bSGordon Ross    (cd $SRC/man/man5 && make $)
270*4f4cb30bSGordon Ross    ;;
271*4f4cb30bSGordon Ross  esac
272*4f4cb30bSGordon Ross}
273*4f4cb30bSGordon Ross
274*4f4cb30bSGordon Ross################################################################
275*4f4cb30bSGordon Ross# This builds $SRC/TAGS (and cscope.files) in a helpful order.
276*4f4cb30bSGordon Ross
277*4f4cb30bSGordon Rossdo_tags() {
278*4f4cb30bSGordon Ross	(cd $SRC ;
279*4f4cb30bSGordon Ross	find uts/common/sys -name '*.[ch]' -print |sort
280*4f4cb30bSGordon Ross	find uts/common/fs/zfs -name '*.[ch]' -print |sort
281*4f4cb30bSGordon Ross	find lib/libzpool -name '*.[ch]' -print |sort
282*4f4cb30bSGordon Ross	find lib/libzfs -name '*.[ch]' -print |sort
283*4f4cb30bSGordon Ross	find cmd/zpool -name '*.[ch]' -print |sort
284*4f4cb30bSGordon Ross	find cmd/zfs -name '*.[ch]' -print |sort
285*4f4cb30bSGordon Ross	find cmd/zdb -name '*.[ch]' -print |sort
286*4f4cb30bSGordon Ross	find cmd/zhack -name '*.[ch]' -print |sort
287*4f4cb30bSGordon Ross	find cmd/zinject -name '*.[ch]' -print |sort
288*4f4cb30bSGordon Ross	find cmd/ztest -name '*.[ch]' -print |sort
289*4f4cb30bSGordon Ross	find common/zfs -name '*.[ch]' -print |sort
290*4f4cb30bSGordon Ross	echo cmd/mdb/common/modules/zfs/zfs.c
291*4f4cb30bSGordon Ross	) > $SRC/cscope.files
292*4f4cb30bSGordon Ross
293*4f4cb30bSGordon Ross	(cd $SRC ;
294*4f4cb30bSGordon Ross	exctags -e --langmap=c:+.ndl -h ndl -L - < cscope.files
295*4f4cb30bSGordon Ross	cscope -b )
296*4f4cb30bSGordon Ross}
297*4f4cb30bSGordon Ross
298*4f4cb30bSGordon Ross################################################################
299*4f4cb30bSGordon Ross# This creates a tarfile one can use to update a test machine.
300*4f4cb30bSGordon Ross
301*4f4cb30bSGordon Rossdo_tar() {
302*4f4cb30bSGordon Ross	git_rev=`git rev-parse --short=8 HEAD`
303*4f4cb30bSGordon Ross	files="
304*4f4cb30bSGordon Rosskernel/drv/$arch64/zfs
305*4f4cb30bSGordon Rosskernel/drv/zfs
306*4f4cb30bSGordon Rosskernel/fs/$arch64/zfs
307*4f4cb30bSGordon Rosskernel/fs/zfs
308*4f4cb30bSGordon Rosskernel/kmdb/$arch64/zfs
309*4f4cb30bSGordon Rosskernel/kmdb/zfs
310*4f4cb30bSGordon Rosslib/$arch64/libzfs.so.1
311*4f4cb30bSGordon Rosslib/$arch64/libzfs_core.so.1
312*4f4cb30bSGordon Rosslib/libzfs.so.1
313*4f4cb30bSGordon Rosslib/libzfs_core.so.1
314*4f4cb30bSGordon Rossusr/bin/$arch32/ztest
315*4f4cb30bSGordon Rossusr/bin/$arch64/ztest
316*4f4cb30bSGordon Rossusr/lib/$arch64/libzfs_jni.so.1
317*4f4cb30bSGordon Rossusr/lib/$arch64/libzpool.so.1
318*4f4cb30bSGordon Rossusr/lib/devfsadm/linkmod/SUNW_zfs_link.so
319*4f4cb30bSGordon Rossusr/lib/fs/zfs/bootinstall
320*4f4cb30bSGordon Rossusr/lib/fs/zfs/fstyp.so.1
321*4f4cb30bSGordon Rossusr/lib/libzfs_jni.so.1
322*4f4cb30bSGordon Rossusr/lib/libzpool.so.1
323*4f4cb30bSGordon Rossusr/lib/mdb/kvm/$arch64/zfs.so
324*4f4cb30bSGordon Rossusr/lib/mdb/kvm/zfs.so
325*4f4cb30bSGordon Rossusr/lib/mdb/proc/$arch64/libzpool.so
326*4f4cb30bSGordon Rossusr/lib/mdb/proc/libzpool.so
327*4f4cb30bSGordon Rosssbin/zfs
328*4f4cb30bSGordon Rosssbin/zpool
329*4f4cb30bSGordon Rossusr/lib/sysevent/modules/zfs_mod.so
330*4f4cb30bSGordon Rossusr/lib/zfs/availdevs
331*4f4cb30bSGordon Rossusr/lib/zfs/pyzfs.py
332*4f4cb30bSGordon Rossusr/lib/zfs/pyzfs.pyc
333*4f4cb30bSGordon Rossusr/sbin/$arch32/zdb
334*4f4cb30bSGordon Rossusr/sbin/$arch64/zdb
335*4f4cb30bSGordon Rossusr/sbin/$arch32/zhack
336*4f4cb30bSGordon Rossusr/sbin/$arch64/zhack
337*4f4cb30bSGordon Rossusr/sbin/$arch32/zinject
338*4f4cb30bSGordon Rossusr/sbin/$arch64/zinject
339*4f4cb30bSGordon Rossusr/sbin/zstreamdump
340*4f4cb30bSGordon Rossusr/share/man/man1m/zdb.1m
341*4f4cb30bSGordon Rossusr/share/man/man1m/zfs.1m
342*4f4cb30bSGordon Rossusr/share/man/man1m/zpool.1m
343*4f4cb30bSGordon Rossusr/share/man/man5/zpool-features.5
344*4f4cb30bSGordon Ross"
345*4f4cb30bSGordon Ross	(cd $ROOT && tar cfj ../../zfs-${git_rev}.tar.bz2 $files)
346*4f4cb30bSGordon Ross}
347*4f4cb30bSGordon Ross
348*4f4cb30bSGordon Ross################################################################
349*4f4cb30bSGordon Ross
350*4f4cb30bSGordon Rossif [ "$1" = "" ]; then
351*4f4cb30bSGordon Ross  set '?' # force usage
352*4f4cb30bSGordon Rossfi
353*4f4cb30bSGordon Ross
354*4f4cb30bSGordon Rossset -x
355*4f4cb30bSGordon Ross
356*4f4cb30bSGordon Rossfor arg
357*4f4cb30bSGordon Rossdo
358*4f4cb30bSGordon Ross  case "$arg" in
359*4f4cb30bSGordon Ross  install)
360*4f4cb30bSGordon Ross    build_tools
361*4f4cb30bSGordon Ross    set -e
362*4f4cb30bSGordon Ross    do_hdrs $arg
363*4f4cb30bSGordon Ross    do_kern $arg
364*4f4cb30bSGordon Ross    do_libs $arg
365*4f4cb30bSGordon Ross    do_cmds $arg
366*4f4cb30bSGordon Ross    do_mans $arg
367*4f4cb30bSGordon Ross    ;;
368*4f4cb30bSGordon Ross  lint)
369*4f4cb30bSGordon Ross    do_kern $arg
370*4f4cb30bSGordon Ross    do_libs $arg
371*4f4cb30bSGordon Ross    do_cmds $arg
372*4f4cb30bSGordon Ross    do_mans $arg
373*4f4cb30bSGordon Ross    ;;
374*4f4cb30bSGordon Ross  clean)
375*4f4cb30bSGordon Ross    do_mans $arg
376*4f4cb30bSGordon Ross    do_cmds $arg
377*4f4cb30bSGordon Ross    do_libs $arg
378*4f4cb30bSGordon Ross    do_kern $arg
379*4f4cb30bSGordon Ross    ;;
380*4f4cb30bSGordon Ross  clobber)
381*4f4cb30bSGordon Ross    do_mans $arg
382*4f4cb30bSGordon Ross    do_cmds $arg
383*4f4cb30bSGordon Ross    do_libs $arg
384*4f4cb30bSGordon Ross    do_kern $arg
385*4f4cb30bSGordon Ross    do_hdrs $arg
386*4f4cb30bSGordon Ross    clobber_tools
387*4f4cb30bSGordon Ross    ;;
388*4f4cb30bSGordon Ross  deplibs)
389*4f4cb30bSGordon Ross    build_tools
390*4f4cb30bSGordon Ross    set -e
391*4f4cb30bSGordon Ross    do_hdrs install
392*4f4cb30bSGordon Ross    do_deplibs install
393*4f4cb30bSGordon Ross    ;;
394*4f4cb30bSGordon Ross  tags)
395*4f4cb30bSGordon Ross    do_tags
396*4f4cb30bSGordon Ross    ;;
397*4f4cb30bSGordon Ross  tar)
398*4f4cb30bSGordon Ross    do_tar
399*4f4cb30bSGordon Ross    ;;
400*4f4cb30bSGordon Ross  *)
401*4f4cb30bSGordon Ross    echo "Usage: $0 {install|lint|clean|clobber|deplibs|tags|tar}";
402*4f4cb30bSGordon Ross    exit 1;
403*4f4cb30bSGordon Ross    ;;
404*4f4cb30bSGordon Ross  esac
405*4f4cb30bSGordon Rossdone
406