xref: /illumos-gate/usr/src/tools/quick/make-smbclnt (revision 3299f39fdcbdab4be7a9c70daa3873f2b78a398d)
1*3299f39fSGordon Ross#!/bin/ksh
2*3299f39fSGordon Ross#
3*3299f39fSGordon Ross# This file and its contents are supplied under the terms of the
4*3299f39fSGordon Ross# Common Development and Distribution License ("CDDL"), version 1.0.
5*3299f39fSGordon Ross# You may only use this file in accordance with the terms of version
6*3299f39fSGordon Ross# 1.0 of the CDDL.
7*3299f39fSGordon Ross#
8*3299f39fSGordon Ross# A full copy of the text of the CDDL should have accompanied this
9*3299f39fSGordon Ross# source.  A copy of the CDDL is also available via the Internet at
10*3299f39fSGordon Ross# http://www.illumos.org/license/CDDL.
11*3299f39fSGordon Ross#
12*3299f39fSGordon Ross
13*3299f39fSGordon Ross#
14*3299f39fSGordon Ross# Copyright 2014 Nexenta Systems, Inc.  All rights reserved.
15*3299f39fSGordon Ross#
16*3299f39fSGordon Ross
17*3299f39fSGordon Ross# Use distributed make (dmake) by default.
18*3299f39fSGordon Rossmake=${MAKE:-dmake}
19*3299f39fSGordon Ross
20*3299f39fSGordon RossCLOSED_IS_PRESENT=no
21*3299f39fSGordon Rossexport CLOSED_IS_PRESENT
22*3299f39fSGordon Ross
23*3299f39fSGordon Ross# Do this if you want to use dbx or gdb
24*3299f39fSGordon Ross# export SOURCEDEBUG=yes
25*3299f39fSGordon Ross
26*3299f39fSGordon Ross[ -n "$SRC" ] || {
27*3299f39fSGordon Ross  echo "SRC not set.  Run 'ws' or 'bldenv' first."
28*3299f39fSGordon Ross  exit 1
29*3299f39fSGordon Ross}
30*3299f39fSGordon Ross
31*3299f39fSGordon Rosscpu=`uname -p`
32*3299f39fSGordon Rosscase $cpu in
33*3299f39fSGordon Rossi386)
34*3299f39fSGordon Ross	x=intel
35*3299f39fSGordon Ross	kmdb_arch="amd64"
36*3299f39fSGordon Ross	mdb_arch="ia32 amd64"
37*3299f39fSGordon Ross	arch64=amd64
38*3299f39fSGordon Ross	;;
39*3299f39fSGordon Rosssparc)
40*3299f39fSGordon Ross	x=sparc
41*3299f39fSGordon Ross	kmdb_arch=v9
42*3299f39fSGordon Ross	mdb_arch="v7 v9"
43*3299f39fSGordon Ross	arch64=sparcv9
44*3299f39fSGordon Ross	;;
45*3299f39fSGordon Ross*)  echo "Huh?" ; exit 1;;
46*3299f39fSGordon Rossesac
47*3299f39fSGordon Ross
48*3299f39fSGordon Ross################################################################
49*3299f39fSGordon Ross
50*3299f39fSGordon Rossbuild_tools() {
51*3299f39fSGordon Ross  test -f $SRC/tools/proto/root_i386-nd/opt/onbld/bin/genoffsets ||
52*3299f39fSGordon Ross    (cd $SRC/tools && $make install)
53*3299f39fSGordon Ross  (cd $SRC/common/mapfiles; $make install)
54*3299f39fSGordon Ross}
55*3299f39fSGordon Ross
56*3299f39fSGordon Rossclobber_tools() {
57*3299f39fSGordon Ross  (cd $SRC/tools && $make clobber)
58*3299f39fSGordon Ross  (cd $SRC/common/mapfiles; $make clobber)
59*3299f39fSGordon Ross}
60*3299f39fSGordon Ross
61*3299f39fSGordon Ross################################################################
62*3299f39fSGordon Ross
63*3299f39fSGordon Rossdo_hdrs() {
64*3299f39fSGordon Ross
65*3299f39fSGordon Rosstarg=$1
66*3299f39fSGordon Rossif [ "$targ" = clobber ]
67*3299f39fSGordon Rossthen
68*3299f39fSGordon Ross  (cd $SRC/uts && $make -k clobber_h)
69*3299f39fSGordon Ross  (cd $SRC/head && $make clobber)
70*3299f39fSGordon Rossfi
71*3299f39fSGordon Ross
72*3299f39fSGordon Rossif [ "$targ" = install ]
73*3299f39fSGordon Rossthen
74*3299f39fSGordon Ross  targ=install_h
75*3299f39fSGordon Ross
76*3299f39fSGordon Ross  # Just the parts of "make sgs" we need, and
77*3299f39fSGordon Ross  # skip them if they appear to be done.
78*3299f39fSGordon Ross  # ... stuff under $SRC
79*3299f39fSGordon Ross  test -f $SRC/uts/common/sys/priv_names.h ||
80*3299f39fSGordon Ross    (cd $SRC/uts && $make -k all_h)
81*3299f39fSGordon Ross
82*3299f39fSGordon Ross  test -f $SRC/head/rpcsvc/nispasswd.h ||
83*3299f39fSGordon Ross    (cd $SRC/head && $make -k install_h)
84*3299f39fSGordon Ross
85*3299f39fSGordon Ross  # ... stuff under $ROOT (proto area)
86*3299f39fSGordon Ross  test -d $ROOT/usr/include/sys ||
87*3299f39fSGordon Ross    (cd $SRC && $make rootdirs)
88*3299f39fSGordon Ross  test -f $ROOT/usr/include/sys/types.h ||
89*3299f39fSGordon Ross    (cd $SRC/uts && $make -k install_h)
90*3299f39fSGordon Ross  test -f $ROOT/usr/include/rpcsvc/daemon_utils.h ||
91*3299f39fSGordon Ross    (cd $SRC/head && $make install_h)
92*3299f39fSGordon Ross
93*3299f39fSGordon Ross  # always update the smb headers to be safe
94*3299f39fSGordon Ross  (cd $SRC/uts/common/smb && $make -k install_h)
95*3299f39fSGordon Ross
96*3299f39fSGordon Rossfi
97*3299f39fSGordon Ross
98*3299f39fSGordon Ross# Need some library headers too...
99*3299f39fSGordon Rossfor lib in \
100*3299f39fSGordon Ross  libcryptoutil \
101*3299f39fSGordon Ross  libmlrpc \
102*3299f39fSGordon Ross  libpam \
103*3299f39fSGordon Ross  libsec \
104*3299f39fSGordon Ross  libshare \
105*3299f39fSGordon Ross  libsmbfs \
106*3299f39fSGordon Ross  passwdutil
107*3299f39fSGordon Rossdo
108*3299f39fSGordon Ross  (cd $SRC/lib/$lib && $make $targ)
109*3299f39fSGordon Rossdone
110*3299f39fSGordon Ross}
111*3299f39fSGordon Ross
112*3299f39fSGordon Ross################################################################
113*3299f39fSGordon Ross
114*3299f39fSGordon Rossdo_kern() {
115*3299f39fSGordon Ross  case $1 in
116*3299f39fSGordon Ross  lint) targ=modlintlib ;;
117*3299f39fSGordon Ross  *) targ=$1 ;;
118*3299f39fSGordon Ross  esac
119*3299f39fSGordon Ross  ( unset SOURCEDEBUG ;
120*3299f39fSGordon Ross  (cd $SRC/uts/$x/nsmb && $make $targ) ;
121*3299f39fSGordon Ross  (cd $SRC/uts/$x/smbfs && $make $targ) )
122*3299f39fSGordon Ross}
123*3299f39fSGordon Ross
124*3299f39fSGordon Ross################################################################
125*3299f39fSGordon Ross
126*3299f39fSGordon Ross# Note lib1 builds prerequisite libraries not delivered by the
127*3299f39fSGordon Ross# tar file we create below.  To accelerate clean/install, we
128*3299f39fSGordon Ross# skip these on clean (but still nuke them for clobber)
129*3299f39fSGordon Ross
130*3299f39fSGordon Rossdo_lib1() {
131*3299f39fSGordon Ross  :
132*3299f39fSGordon Ross}
133*3299f39fSGordon Ross
134*3299f39fSGordon Ross# lib2 builds stuff we include in the tar file,
135*3299f39fSGordon Ross# or that we don't mind rebuilding after clean.
136*3299f39fSGordon Ross
137*3299f39fSGordon Rossdo_lib2() {
138*3299f39fSGordon Ross
139*3299f39fSGordon Ross(cd $SRC/lib/libsmbfs && $make $1)
140*3299f39fSGordon Ross[ "$1" = install ] &&
141*3299f39fSGordon Ross  (cd $SRC/lib/libsmbfs && $make _msg)
142*3299f39fSGordon Ross(cd $SRC/lib/libmlrpc && $make $1)
143*3299f39fSGordon Ross(cd $SRC/lib/libshare && $make $1 PLUGINS=smbfs)
144*3299f39fSGordon Ross(cd $SRC/lib/passwdutil && $make $1)
145*3299f39fSGordon Ross(cd $SRC/lib/pam_modules/smbfs && $make $1)
146*3299f39fSGordon Ross
147*3299f39fSGordon Ross}
148*3299f39fSGordon Ross
149*3299f39fSGordon Ross################################################################
150*3299f39fSGordon Ross
151*3299f39fSGordon Rossdo_cmds() {
152*3299f39fSGordon Ross
153*3299f39fSGordon Rosscase $1 in
154*3299f39fSGordon Rossinstall)
155*3299f39fSGordon Ross  # mount programs need fslib.o
156*3299f39fSGordon Ross  (cd $SRC/cmd/fs.d && $make fslib.o)
157*3299f39fSGordon Ross  (cd $SRC/cmd/fs.d/smbclnt && $make $1 catalog)
158*3299f39fSGordon Ross  ;;
159*3299f39fSGordon Rossclean|clobber)
160*3299f39fSGordon Ross  (cd $SRC/cmd/fs.d/smbclnt && $make $1)
161*3299f39fSGordon Ross  (cd $SRC/cmd/fs.d && $make ${1}_local)
162*3299f39fSGordon Ross  ;;
163*3299f39fSGordon Rossesac
164*3299f39fSGordon Ross
165*3299f39fSGordon Ross# Build the MDB modules, WITH the linktest
166*3299f39fSGordon Ross(cd $SRC/cmd/mdb/tools && $make $1)
167*3299f39fSGordon Ross
168*3299f39fSGordon Ross# kmdb_arch is 64-bit only
169*3299f39fSGordon Rossfor a in $kmdb_arch
170*3299f39fSGordon Rossdo
171*3299f39fSGordon Ross  case $1 in
172*3299f39fSGordon Ross  install|lint)
173*3299f39fSGordon Ross    (cd $SRC/cmd/mdb/$x/$a/kmdb &&
174*3299f39fSGordon Ross	$make kmdb_modlinktest.o )
175*3299f39fSGordon Ross    ;;
176*3299f39fSGordon Ross  clean|clobber)
177*3299f39fSGordon Ross    (cd $SRC/cmd/mdb/$x/$a/kmdb &&
178*3299f39fSGordon Ross	$make -k $1 )
179*3299f39fSGordon Ross    ;;
180*3299f39fSGordon Ross  esac
181*3299f39fSGordon Ross
182*3299f39fSGordon Ross  (cd $SRC/cmd/mdb/$x/$a/nsmb &&
183*3299f39fSGordon Ross	$make $1 KMDB_LINKTEST_ENABLE= )
184*3299f39fSGordon Ross  (cd $SRC/cmd/mdb/$x/$a/smbfs &&
185*3299f39fSGordon Ross	$make $1 KMDB_LINKTEST_ENABLE= )
186*3299f39fSGordon Rossdone
187*3299f39fSGordon Ross}
188*3299f39fSGordon Ross
189*3299f39fSGordon Ross
190*3299f39fSGordon Ross################################################################
191*3299f39fSGordon Ross# This builds $SRC/TAGS (and cscope.files) in a helpful order.
192*3299f39fSGordon Ross
193*3299f39fSGordon Rossdo_tags() {
194*3299f39fSGordon Ross	(cd $SRC ;
195*3299f39fSGordon Ross	find uts/common/sys -name '*.[ch]' -print |sort
196*3299f39fSGordon Ross	find uts/common/net -name '*.[ch]' -print |sort
197*3299f39fSGordon Ross	find uts/common/netinet -name '*.[ch]' -print |sort
198*3299f39fSGordon Ross	find uts/common/smb -name '*.[ch]' -print |sort
199*3299f39fSGordon Ross	find uts/common/netsmb -name '*.[ch]' -print |sort
200*3299f39fSGordon Ross	find uts/common/fs/smbclnt -name '*.[ch]' -print |sort
201*3299f39fSGordon Ross	find head -name '*.h' -print |sort
202*3299f39fSGordon Ross	find lib/libsmbfs -name '*.[ch]' -print |sort
203*3299f39fSGordon Ross	find cmd/fs.d/smbclnt -name '*.[ch]' -print |sort
204*3299f39fSGordon Ross	find common/smbclnt -name '*.[ch]' -print |sort
205*3299f39fSGordon Ross	) > $SRC/cscope.files
206*3299f39fSGordon Ross
207*3299f39fSGordon Ross	(cd $SRC ;
208*3299f39fSGordon Ross	exctags -e --langmap=c:+.ndl -h ndl -L - < cscope.files
209*3299f39fSGordon Ross	cscope -b )
210*3299f39fSGordon Ross}
211*3299f39fSGordon Ross
212*3299f39fSGordon Ross################################################################
213*3299f39fSGordon Ross# This creates a tarfile one can use to update a test machine.
214*3299f39fSGordon Ross
215*3299f39fSGordon Rossdo_tar() {
216*3299f39fSGordon Ross	git_rev=`git rev-parse --short=8 HEAD`
217*3299f39fSGordon Ross	files="
218*3299f39fSGordon Rosslib/svc/manifest/network/smb/client.xml
219*3299f39fSGordon Rosslib/svc/method/smb-client
220*3299f39fSGordon Rossopt/smbcl-tests/tests/srvenum
221*3299f39fSGordon Rossopt/smbcl-tests/tests/srvinfo
222*3299f39fSGordon Rossopt/smbcl-tests/tests/tconn
223*3299f39fSGordon Rossusr/bin/smbutil
224*3299f39fSGordon Rossusr/kernel/drv/$arch64/nsmb
225*3299f39fSGordon Rossusr/kernel/fs/$arch64/smbfs
226*3299f39fSGordon Rossusr/kernel/kmdb/$arch64/nsmb
227*3299f39fSGordon Rossusr/kernel/kmdb/$arch64/smbfs
228*3299f39fSGordon Rossusr/lib/$arch64/libsmbfs.so.1
229*3299f39fSGordon Rossusr/lib/fs/smbfs/$arch64/libshare_smbfs.so.1
230*3299f39fSGordon Rossusr/lib/fs/smbfs/chacl
231*3299f39fSGordon Rossusr/lib/fs/smbfs/dfshares
232*3299f39fSGordon Rossusr/lib/fs/smbfs/libshare_smbfs.so.1
233*3299f39fSGordon Rossusr/lib/fs/smbfs/lsacl
234*3299f39fSGordon Rossusr/lib/fs/smbfs/mount
235*3299f39fSGordon Rossusr/lib/fs/smbfs/share
236*3299f39fSGordon Rossusr/lib/fs/smbfs/umount
237*3299f39fSGordon Rossusr/lib/fs/smbfs/unshare
238*3299f39fSGordon Rossusr/lib/libmlrpc.so.2
239*3299f39fSGordon Rossusr/lib/libsmbfs.so.1
240*3299f39fSGordon Rossusr/lib/mdb/kvm/$arch64/nsmb.so
241*3299f39fSGordon Rossusr/lib/mdb/kvm/$arch64/smbfs.so
242*3299f39fSGordon Rossusr/lib/mdb/kvm/nsmb.so
243*3299f39fSGordon Rossusr/lib/mdb/kvm/smbfs.so
244*3299f39fSGordon Rossusr/lib/security/$arch64/pam_smbfs_login.so.1
245*3299f39fSGordon Rossusr/lib/security/pam_smbfs_login.so.1
246*3299f39fSGordon Rossusr/lib/smbfs/smbiod
247*3299f39fSGordon Rossusr/lib/smbfs/smbiod-svc
248*3299f39fSGordon Ross"
249*3299f39fSGordon Ross
250*3299f39fSGordon Ross	(cd $ROOT && tar cfj ../../smbclnt-${git_rev}.tar.bz2 $files)
251*3299f39fSGordon Ross}
252*3299f39fSGordon Ross
253*3299f39fSGordon Ross################################################################
254*3299f39fSGordon Ross
255*3299f39fSGordon Rossif [ "$1" = "" ]; then
256*3299f39fSGordon Ross  set '?' # force usage
257*3299f39fSGordon Rossfi
258*3299f39fSGordon Ross
259*3299f39fSGordon Rossset -x
260*3299f39fSGordon Ross
261*3299f39fSGordon Rossfor arg
262*3299f39fSGordon Rossdo
263*3299f39fSGordon Ross  case "$arg" in
264*3299f39fSGordon Ross  install)
265*3299f39fSGordon Ross    build_tools
266*3299f39fSGordon Ross    set -e
267*3299f39fSGordon Ross    do_hdrs $arg
268*3299f39fSGordon Ross    do_kern $arg
269*3299f39fSGordon Ross    do_lib1 $arg
270*3299f39fSGordon Ross    do_lib2 $arg
271*3299f39fSGordon Ross    do_cmds $arg
272*3299f39fSGordon Ross    ;;
273*3299f39fSGordon Ross  lint)
274*3299f39fSGordon Ross    do_kern $arg
275*3299f39fSGordon Ross    do_lib1 $arg
276*3299f39fSGordon Ross    do_lib2 $arg
277*3299f39fSGordon Ross    do_cmds $arg
278*3299f39fSGordon Ross    ;;
279*3299f39fSGordon Ross  clean)
280*3299f39fSGordon Ross    # intentionally skip: lib1, hdrs, tools
281*3299f39fSGordon Ross    do_cmds $arg
282*3299f39fSGordon Ross    do_lib2 $arg
283*3299f39fSGordon Ross    do_kern $arg
284*3299f39fSGordon Ross    ;;
285*3299f39fSGordon Ross  clobber)
286*3299f39fSGordon Ross    do_cmds $arg
287*3299f39fSGordon Ross    do_lib2 $arg
288*3299f39fSGordon Ross    do_lib1 $arg
289*3299f39fSGordon Ross    do_kern $arg
290*3299f39fSGordon Ross    do_hdrs $arg
291*3299f39fSGordon Ross    clobber_tools
292*3299f39fSGordon Ross    ;;
293*3299f39fSGordon Ross  tags)
294*3299f39fSGordon Ross    do_tags
295*3299f39fSGordon Ross    ;;
296*3299f39fSGordon Ross  tar)
297*3299f39fSGordon Ross    do_tar
298*3299f39fSGordon Ross    ;;
299*3299f39fSGordon Ross  *)
300*3299f39fSGordon Ross    echo "Usage: $0 {install|lint|clean|clobber|tags|tar}";
301*3299f39fSGordon Ross    exit 1;
302*3299f39fSGordon Ross    ;;
303*3299f39fSGordon Ross  esac
304*3299f39fSGordon Rossdone
305