110b444a8SGordon Ross#!/bin/ksh 210b444a8SGordon Ross# 310b444a8SGordon Ross# This file and its contents are supplied under the terms of the 410b444a8SGordon Ross# Common Development and Distribution License ("CDDL"), version 1.0. 510b444a8SGordon Ross# You may only use this file in accordance with the terms of version 610b444a8SGordon Ross# 1.0 of the CDDL. 710b444a8SGordon Ross# 810b444a8SGordon Ross# A full copy of the text of the CDDL should have accompanied this 910b444a8SGordon Ross# source. A copy of the CDDL is also available via the Internet at 1010b444a8SGordon Ross# http://www.illumos.org/license/CDDL. 1110b444a8SGordon Ross# 1210b444a8SGordon Ross 1310b444a8SGordon Ross# 14b9538c21SGordon Ross# Copyright 2018 Nexenta Systems, Inc. All rights reserved. 1510b444a8SGordon Ross# 1610b444a8SGordon Ross 1710b444a8SGordon Ross# Use distributed make (dmake) by default. 1810b444a8SGordon Rossmake=${MAKE:-dmake} 1910b444a8SGordon Ross 2010b444a8SGordon RossCLOSED_IS_PRESENT=no 2110b444a8SGordon Rossexport CLOSED_IS_PRESENT 2210b444a8SGordon Ross 23b3700b07SGordon Ross# Do this if you want to use dbx or gdb 24b3700b07SGordon Ross# export SOURCEDEBUG=yes 2510b444a8SGordon Ross 2610b444a8SGordon Ross[ -n "$SRC" ] || { 2710b444a8SGordon Ross echo "SRC not set. Run 'ws' or 'bldenv' first." 2810b444a8SGordon Ross exit 1 2910b444a8SGordon Ross} 3010b444a8SGordon Ross 3110b444a8SGordon Rosscpu=`uname -p` 3210b444a8SGordon Rosscase $cpu in 3310b444a8SGordon Rossi386) 3410b444a8SGordon Ross x=intel 35b9538c21SGordon Ross kmdb_arch="amd64" 3610b444a8SGordon Ross mdb_arch="ia32 amd64" 3710b444a8SGordon Ross arch64=amd64 3810b444a8SGordon Ross ;; 3910b444a8SGordon Rosssparc) 4010b444a8SGordon Ross x=sparc 41b9538c21SGordon Ross kmdb_arch=v9 42b9538c21SGordon Ross mdb_arch="v7 v9" 4310b444a8SGordon Ross arch64=sparcv9 4410b444a8SGordon Ross ;; 4510b444a8SGordon Ross*) echo "Huh?" ; exit 1;; 4610b444a8SGordon Rossesac 4710b444a8SGordon Ross 4810b444a8SGordon Ross################################################################ 4910b444a8SGordon Ross 5010b444a8SGordon Rossbuild_tools() { 5110b444a8SGordon Ross test -f $SRC/tools/proto/root_i386-nd/opt/onbld/bin/genoffsets || 5210b444a8SGordon Ross (cd $SRC/tools && $make install) 5310b444a8SGordon Ross (cd $SRC/common/mapfiles; $make install) 5410b444a8SGordon Ross} 5510b444a8SGordon Ross 5610b444a8SGordon Rossclobber_tools() { 5710b444a8SGordon Ross (cd $SRC/tools && $make clobber) 5810b444a8SGordon Ross (cd $SRC/common/mapfiles; $make clobber) 5910b444a8SGordon Ross} 6010b444a8SGordon Ross 6110b444a8SGordon Ross################################################################ 6210b444a8SGordon Ross 6310b444a8SGordon Rossdo_hdrs() { 6410b444a8SGordon Ross 6510b444a8SGordon Rosstarg=$1 6610b444a8SGordon Rossif [ "$targ" = clobber ] 6710b444a8SGordon Rossthen 6810b444a8SGordon Ross (cd $SRC/uts && $make -k clobber_h) 6910b444a8SGordon Ross (cd $SRC/head && $make clobber) 7010b444a8SGordon Rossfi 7110b444a8SGordon Ross 7210b444a8SGordon Rossif [ "$targ" = install ] 7310b444a8SGordon Rossthen 7410b444a8SGordon Ross targ=install_h 7510b444a8SGordon Ross 7610b444a8SGordon Ross # Just the parts of "make sgs" we need, and 7710b444a8SGordon Ross # skip them if they appear to be done. 7810b444a8SGordon Ross # ... stuff under $SRC 7910b444a8SGordon Ross test -f $SRC/uts/common/sys/priv_names.h || 8010b444a8SGordon Ross (cd $SRC/uts && $make -k all_h) 8110b444a8SGordon Ross 8210b444a8SGordon Ross test -f $SRC/head/rpcsvc/nispasswd.h || 8310b444a8SGordon Ross (cd $SRC/head && $make -k install_h) 8410b444a8SGordon Ross 8510b444a8SGordon Ross # ... stuff under $ROOT (proto area) 8610b444a8SGordon Ross test -d $ROOT/usr/include/sys || 8710b444a8SGordon Ross (cd $SRC && $make rootdirs) 8810b444a8SGordon Ross test -f $ROOT/usr/include/sys/types.h || 8910b444a8SGordon Ross (cd $SRC/uts && $make -k install_h) 9010b444a8SGordon Ross test -f $ROOT/usr/include/rpcsvc/daemon_utils.h || 9110b444a8SGordon Ross (cd $SRC/head && $make install_h) 9210b444a8SGordon Ross 9310b444a8SGordon Ross # always update the smbsrv headers to be safe 9412b65585SGordon Ross (cd $SRC/uts/common/gssapi && $make -k install_h) 9510b444a8SGordon Ross (cd $SRC/uts/common/sys && $make -k install_h) 9610b444a8SGordon Ross (cd $SRC/uts/common/smb && $make -k install_h) 9710b444a8SGordon Ross (cd $SRC/uts/common/smbsrv && $make -k install_h) 9810b444a8SGordon Ross 9910b444a8SGordon Rossfi 10010b444a8SGordon Ross 10110b444a8SGordon Ross# Need some library headers too... 10210b444a8SGordon Rossfor lib in \ 103b3700b07SGordon Ross libads \ 10410b444a8SGordon Ross libbsm \ 10510b444a8SGordon Ross libcmdutils \ 10610b444a8SGordon Ross libcryptoutil \ 10710b444a8SGordon Ross libdevid \ 108b819cea2SGordon Ross libfakekernel \ 10912b65585SGordon Ross libgss \ 11010b444a8SGordon Ross libidmap \ 111*3299f39fSGordon Ross libkrb5 \ 112*3299f39fSGordon Ross libmlrpc \ 11310b444a8SGordon Ross libpam \ 11410b444a8SGordon Ross libsec \ 11510b444a8SGordon Ross libscf \ 11610b444a8SGordon Ross libshare \ 11710b444a8SGordon Ross libsmbfs \ 11810b444a8SGordon Ross libsqlite \ 11910b444a8SGordon Ross libuutil \ 12010b444a8SGordon Ross passwdutil \ 12110b444a8SGordon Ross smbsrv 12210b444a8SGordon Rossdo 12310b444a8SGordon Ross (cd $SRC/lib/$lib && $make $targ) 12410b444a8SGordon Rossdone 12510b444a8SGordon Ross} 12610b444a8SGordon Ross 12710b444a8SGordon Ross################################################################ 12810b444a8SGordon Ross 12910b444a8SGordon Rossdo_kern() { 13010b444a8SGordon Ross case $1 in 13110b444a8SGordon Ross lint) targ=modlintlib ;; 13210b444a8SGordon Ross *) targ=$1 ;; 13310b444a8SGordon Ross esac 13410b444a8SGordon Ross ( unset SOURCEDEBUG ; 13510b444a8SGordon Ross (cd $SRC/uts/$x/nsmb && $make $targ) ; 13610b444a8SGordon Ross (cd $SRC/uts/$x/smbfs && $make $targ) ; 13710b444a8SGordon Ross (cd $SRC/uts/$x/smbsrv && $make $targ) ) 13810b444a8SGordon Ross} 13910b444a8SGordon Ross 14010b444a8SGordon Ross################################################################ 14110b444a8SGordon Ross 142b819cea2SGordon Ross# Note lib1 builds prerequisite libraries not delivered by the 143b819cea2SGordon Ross# tar file we create below. To accelerate clean/install, we 144b819cea2SGordon Ross# skip these on clean (but still nuke them for clobber) 145b819cea2SGordon Ross 146b819cea2SGordon Rossdo_lib1() { 14710b444a8SGordon Ross 14810b444a8SGordon Rossfor lib in \ 14910b444a8SGordon Ross libavl \ 15012b65585SGordon Ross libgss \ 15112b65585SGordon Ross libkrb5 \ 15210b444a8SGordon Ross libcmdutils \ 15310b444a8SGordon Ross libsqlite \ 15410b444a8SGordon Ross libuutil 15510b444a8SGordon Rossdo 15610b444a8SGordon Ross (cd $SRC/lib/$lib && $make $1) 15710b444a8SGordon Rossdone 158b819cea2SGordon Ross} 159b819cea2SGordon Ross 160b819cea2SGordon Ross# lib2 builds stuff we include in the tar file, 161b819cea2SGordon Ross# or that we don't mind rebuilding after clean. 162b819cea2SGordon Ross 163b819cea2SGordon Rossdo_lib2() { 164b819cea2SGordon Ross 165b819cea2SGordon Rossfor lib in \ 166b819cea2SGordon Ross libfakekernel \ 167b3700b07SGordon Ross libads \ 168*3299f39fSGordon Ross libsmbfs \ 169*3299f39fSGordon Ross libmlrpc 170b819cea2SGordon Rossdo 171b819cea2SGordon Ross (cd $SRC/lib/$lib && $make $1) 172b819cea2SGordon Rossdone 17310b444a8SGordon Ross 17410b444a8SGordon Ross(cd $SRC/lib/libshare && $make $1 PLUGINS=smb) 17510b444a8SGordon Ross(cd $SRC/lib/smbsrv && $make $1) 17610b444a8SGordon Ross(cd $SRC/lib/passwdutil && $make $1) 17710b444a8SGordon Ross(cd $SRC/lib/pam_modules/smb && $make $1) 17810b444a8SGordon Ross 17910b444a8SGordon Ross} 18010b444a8SGordon Ross 18110b444a8SGordon Ross################################################################ 18210b444a8SGordon Ross 18310b444a8SGordon Rossdo_cmds() { 18410b444a8SGordon Ross 18510b444a8SGordon Rosscase $1 in 18610b444a8SGordon Rossinstall) 18710b444a8SGordon Ross # mount programs need fslib.o 18810b444a8SGordon Ross (cd $SRC/cmd/fs.d && $make fslib.o) 18910b444a8SGordon Ross (cd $SRC/cmd/fs.d/smbclnt && $make $1 catalog) 19010b444a8SGordon Ross ;; 19110b444a8SGordon Rossclean|clobber) 19210b444a8SGordon Ross (cd $SRC/cmd/fs.d/smbclnt && $make $1) 19310b444a8SGordon Ross (cd $SRC/cmd/fs.d && $make ${1}_local) 19410b444a8SGordon Ross ;; 19510b444a8SGordon Rossesac 19610b444a8SGordon Ross 19710b444a8SGordon Ross(cd $SRC/cmd/devfsadm && $make $1) 19810b444a8SGordon Ross(cd $SRC/cmd/smbsrv && $make $1) 19910b444a8SGordon Ross 20010b444a8SGordon Ross# Build the MDB modules, WITH the linktest 20110b444a8SGordon Ross(cd $SRC/cmd/mdb/tools && $make $1) 202b9538c21SGordon Ross 203b9538c21SGordon Ross# kmdb_arch is 64-bit only 204b9538c21SGordon Rossfor a in $kmdb_arch 20510b444a8SGordon Rossdo 20610b444a8SGordon Ross case $1 in 20710b444a8SGordon Ross install|lint) 20810b444a8SGordon Ross (cd $SRC/cmd/mdb/$x/$a/kmdb && 20910b444a8SGordon Ross $make kmdb_modlinktest.o ) 21010b444a8SGordon Ross ;; 21110b444a8SGordon Ross clean|clobber) 21210b444a8SGordon Ross (cd $SRC/cmd/mdb/$x/$a/kmdb && 21310b444a8SGordon Ross $make -k $1 ) 21410b444a8SGordon Ross ;; 21510b444a8SGordon Ross esac 21610b444a8SGordon Ross (cd $SRC/cmd/mdb/$x/$a/nsmb && 21710b444a8SGordon Ross $make $1 KMDB_LINKTEST_ENABLE= ) 21810b444a8SGordon Ross (cd $SRC/cmd/mdb/$x/$a/smbfs && 21910b444a8SGordon Ross $make $1 KMDB_LINKTEST_ENABLE= ) 22010b444a8SGordon Ross (cd $SRC/cmd/mdb/$x/$a/smbsrv && 22110b444a8SGordon Ross $make $1 KMDB_LINKTEST_ENABLE= ) 222b9538c21SGordon Rossdone 223b9538c21SGordon Ross 224b9538c21SGordon Ross# mdb_arch is both 32-bit & 64-bit 225b9538c21SGordon Rossfor a in $mdb_arch 226b9538c21SGordon Rossdo 227b819cea2SGordon Ross (cd $SRC/cmd/mdb/$x/$a/libfksmbsrv && 228b9538c21SGordon Ross $make $1 ) 229b819cea2SGordon Ross 230b819cea2SGordon Ross# We build these libraries (to the proto area), so we need to 231b819cea2SGordon Ross# build the mdb modules too so mdb will load them. 232b819cea2SGordon Ross (cd $SRC/cmd/mdb/$x/$a/libcmdutils && 233b819cea2SGordon Ross $make $1 ) 234b819cea2SGordon Ross (cd $SRC/cmd/mdb/$x/$a/libavl && 235b819cea2SGordon Ross $make $1 ) 236b819cea2SGordon Ross 23710b444a8SGordon Rossdone 23810b444a8SGordon Ross 23910b444a8SGordon Ross(cd $SRC/cmd/Adm/sun && $make $1) 24010b444a8SGordon Ross 24110b444a8SGordon Ross# Deal with mode 0400 file annoyance... 24210b444a8SGordon Ross# See usr/src/cmd/Adm/sun/Makefile 24310b444a8SGordon Rossif [ $1 = install ]; then 24410b444a8SGordon Ross chmod a+r $ROOT/var/smb/smbpasswd 24510b444a8SGordon Rossfi 24610b444a8SGordon Ross} 24710b444a8SGordon Ross 24810b444a8SGordon Ross 24910b444a8SGordon Ross################################################################ 25010b444a8SGordon Ross# This builds $SRC/TAGS (and cscope.files) in a helpful order. 25110b444a8SGordon Ross 25210b444a8SGordon Rossdo_tags() { 25310b444a8SGordon Ross (cd $SRC ; 25410b444a8SGordon Ross find uts/common/sys -name '*.[ch]' -print |sort 25510b444a8SGordon Ross find uts/common/net -name '*.[ch]' -print |sort 25610b444a8SGordon Ross find uts/common/netinet -name '*.[ch]' -print |sort 25710b444a8SGordon Ross find uts/common/smb -name '*.[ch]' -print |sort 25810b444a8SGordon Ross find uts/common/smbsrv -name '*.ndl' -print |sort 25910b444a8SGordon Ross find uts/common/smbsrv -name '*.[ch]' -print |sort 26010b444a8SGordon Ross find uts/common/fs/smbsrv -name '*.[ch]' -print |sort 26112b65585SGordon Ross find uts/common/gssapi -name '*.[ch]' -print |sort 26212b65585SGordon Ross find head -name '*.h' -print |sort 26310b444a8SGordon Ross find lib/smbsrv -name '*.[ch]' -print |sort 26412b65585SGordon Ross find lib/libsmbfs -name '*.[ch]' -print |sort 26512b65585SGordon Ross find lib/libads -name '*.[ch]' -print |sort 26612b65585SGordon Ross find lib/libgss -name '*.[ch]' -print |sort 26710b444a8SGordon Ross find cmd/smbsrv -name '*.[ch]' -print |sort 26810b444a8SGordon Ross find common/smbsrv -name '*.[ch]' -print |sort 26910b444a8SGordon Ross ) > $SRC/cscope.files 27010b444a8SGordon Ross 27110b444a8SGordon Ross (cd $SRC ; 27210b444a8SGordon Ross exctags -e --langmap=c:+.ndl -h ndl -L - < cscope.files 27310b444a8SGordon Ross cscope -b ) 27410b444a8SGordon Ross} 27510b444a8SGordon Ross 27610b444a8SGordon Ross################################################################ 27710b444a8SGordon Ross# This creates a tarfile one can use to update a test machine. 27810b444a8SGordon Ross 27910b444a8SGordon Rossdo_tar() { 280ed81dd52SAlek Pinchuk git_rev=`git rev-parse --short=8 HEAD` 28110b444a8SGordon Ross files=" 282ed81dd52SAlek Pinchuklib/svc/manifest/network/smb/server.xml 28310b444a8SGordon Rossusr/kernel/drv/$arch64/smbsrv 28410b444a8SGordon Rossusr/kernel/kmdb/$arch64/smbsrv 28510b444a8SGordon Rossusr/lib/fs/smb/$arch64/libshare_smb.so.1 28610b444a8SGordon Rossusr/lib/fs/smb/libshare_smb.so.1 28710b444a8SGordon Rossusr/lib/libsmbfs.so.1 28810b444a8SGordon Rossusr/lib/mdb/kvm/$arch64/smbsrv.so 28910b444a8SGordon Rossusr/lib/reparse/libreparse_smb.so.1 29010b444a8SGordon Rossusr/lib/security/pam_smb_passwd.so.1 291ed81dd52SAlek Pinchukusr/lib/smbsrv/dtrace 292*3299f39fSGordon Rossusr/lib/libmlrpc.so.2 29310b444a8SGordon Rossusr/lib/smbsrv/libmlsvc.so.1 29410b444a8SGordon Rossusr/lib/smbsrv/libsmb.so.1 29510b444a8SGordon Rossusr/lib/smbsrv/libsmbns.so.1 29610b444a8SGordon Rossusr/lib/smbsrv/smbd 29710b444a8SGordon Rossusr/sbin/devfsadm 29810b444a8SGordon Rossusr/sbin/smbadm 29910b444a8SGordon Rossusr/sbin/smbstat 30010b444a8SGordon Ross" 30110b444a8SGordon Ross 302ed81dd52SAlek Pinchuk (cd $ROOT && tar cfj ../../smbsrv-${git_rev}.tar.bz2 $files) 30310b444a8SGordon Ross} 30410b444a8SGordon Ross 30510b444a8SGordon Ross################################################################ 30610b444a8SGordon Ross 30710b444a8SGordon Rossif [ "$1" = "" ]; then 30810b444a8SGordon Ross set '?' # force usage 30910b444a8SGordon Rossfi 31010b444a8SGordon Ross 31110b444a8SGordon Rossset -x 31210b444a8SGordon Ross 31310b444a8SGordon Rossfor arg 31410b444a8SGordon Rossdo 31510b444a8SGordon Ross case "$arg" in 316b819cea2SGordon Ross install) 31710b444a8SGordon Ross build_tools 31810b444a8SGordon Ross set -e 31910b444a8SGordon Ross do_hdrs $arg 32010b444a8SGordon Ross do_kern $arg 321b819cea2SGordon Ross do_lib1 $arg 322b819cea2SGordon Ross do_lib2 $arg 32310b444a8SGordon Ross do_cmds $arg 32410b444a8SGordon Ross ;; 32510b444a8SGordon Ross lint) 32610b444a8SGordon Ross do_kern $arg 327b819cea2SGordon Ross do_lib1 $arg 328b819cea2SGordon Ross do_lib2 $arg 32910b444a8SGordon Ross do_cmds $arg 33010b444a8SGordon Ross ;; 33110b444a8SGordon Ross clean) 332b819cea2SGordon Ross # intentionally skip: lib1, hdrs, tools 33310b444a8SGordon Ross do_cmds $arg 334b819cea2SGordon Ross do_lib2 $arg 33510b444a8SGordon Ross do_kern $arg 33610b444a8SGordon Ross ;; 33710b444a8SGordon Ross clobber) 33810b444a8SGordon Ross do_cmds $arg 339b819cea2SGordon Ross do_lib2 $arg 340b819cea2SGordon Ross do_lib1 $arg 34110b444a8SGordon Ross do_kern $arg 34210b444a8SGordon Ross do_hdrs $arg 34310b444a8SGordon Ross clobber_tools 34410b444a8SGordon Ross ;; 34510b444a8SGordon Ross tags) 34610b444a8SGordon Ross do_tags 34710b444a8SGordon Ross ;; 34810b444a8SGordon Ross tar) 34910b444a8SGordon Ross do_tar 35010b444a8SGordon Ross ;; 35110b444a8SGordon Ross *) 352b819cea2SGordon Ross echo "Usage: $0 {install|lint|clean|clobber|tags|tar}"; 35310b444a8SGordon Ross exit 1; 35410b444a8SGordon Ross ;; 35510b444a8SGordon Ross esac 35610b444a8SGordon Rossdone 357