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