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 2013 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 Rossexport SOURCEDEBUG=yes 24*4f4cb30bSGordon Ross 25*4f4cb30bSGordon Ross[ -n "$SRC" ] || { 26*4f4cb30bSGordon Ross echo "SRC not set. Run 'ws' or 'bldenv' first." 27*4f4cb30bSGordon Ross exit 1 28*4f4cb30bSGordon Ross} 29*4f4cb30bSGordon Ross 30*4f4cb30bSGordon Rosscpu=`uname -p` 31*4f4cb30bSGordon Rosscase $cpu in 32*4f4cb30bSGordon Rossi386) 33*4f4cb30bSGordon Ross x=intel 34*4f4cb30bSGordon Ross mdb_arch="ia32 amd64" 35*4f4cb30bSGordon Ross arch64=amd64 36*4f4cb30bSGordon Ross ;; 37*4f4cb30bSGordon Rosssparc) 38*4f4cb30bSGordon Ross x=sparc 39*4f4cb30bSGordon Ross mdb_arch=v9 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 smbsrv headers to be safe 91*4f4cb30bSGordon Ross # test -f $ROOT/usr/include/smbsrv/wintypes.h || 92*4f4cb30bSGordon Ross (cd $SRC/uts/common/sys && $make -k install_h) 93*4f4cb30bSGordon Ross (cd $SRC/uts/common/smb && $make -k install_h) 94*4f4cb30bSGordon Ross (cd $SRC/uts/common/smbsrv && $make -k install_h) 95*4f4cb30bSGordon Ross 96*4f4cb30bSGordon Rossfi 97*4f4cb30bSGordon Ross 98*4f4cb30bSGordon Ross# Need some library headers too... 99*4f4cb30bSGordon Rossfor lib in \ 100*4f4cb30bSGordon Ross libbsm \ 101*4f4cb30bSGordon Ross libcmdutils \ 102*4f4cb30bSGordon Ross libcryptoutil \ 103*4f4cb30bSGordon Ross libdevid \ 104*4f4cb30bSGordon Ross libidmap \ 105*4f4cb30bSGordon Ross libpam \ 106*4f4cb30bSGordon Ross libsec \ 107*4f4cb30bSGordon Ross libscf \ 108*4f4cb30bSGordon Ross libshare \ 109*4f4cb30bSGordon Ross libsmbfs \ 110*4f4cb30bSGordon Ross libsqlite \ 111*4f4cb30bSGordon Ross libuutil \ 112*4f4cb30bSGordon Ross passwdutil \ 113*4f4cb30bSGordon Ross smbsrv 114*4f4cb30bSGordon Rossdo 115*4f4cb30bSGordon Ross (cd $SRC/lib/$lib && $make $targ) 116*4f4cb30bSGordon Rossdone 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 ( unset SOURCEDEBUG ; 127*4f4cb30bSGordon Ross (cd $SRC/uts/$x/nsmb && $make $targ) ; 128*4f4cb30bSGordon Ross (cd $SRC/uts/$x/smbfs && $make $targ) ; 129*4f4cb30bSGordon Ross (cd $SRC/uts/$x/smbsrv && $make $targ) ) 130*4f4cb30bSGordon Ross} 131*4f4cb30bSGordon Ross 132*4f4cb30bSGordon Ross################################################################ 133*4f4cb30bSGordon Ross 134*4f4cb30bSGordon Rossdo_libs() { 135*4f4cb30bSGordon Ross 136*4f4cb30bSGordon Rossfor lib in \ 137*4f4cb30bSGordon Ross libavl \ 138*4f4cb30bSGordon Ross libcmdutils \ 139*4f4cb30bSGordon Ross libsmbfs \ 140*4f4cb30bSGordon Ross libsqlite \ 141*4f4cb30bSGordon Ross libuutil 142*4f4cb30bSGordon Rossdo 143*4f4cb30bSGordon Ross (cd $SRC/lib/$lib && $make $1) 144*4f4cb30bSGordon Rossdone 145*4f4cb30bSGordon Ross 146*4f4cb30bSGordon Ross(cd $SRC/lib/libshare && $make $1 PLUGINS=smb) 147*4f4cb30bSGordon Ross(cd $SRC/lib/smbsrv && $make $1) 148*4f4cb30bSGordon Ross(cd $SRC/lib/passwdutil && $make $1) 149*4f4cb30bSGordon Ross(cd $SRC/lib/pam_modules/smb && $make $1) 150*4f4cb30bSGordon Ross 151*4f4cb30bSGordon Ross} 152*4f4cb30bSGordon Ross 153*4f4cb30bSGordon Ross################################################################ 154*4f4cb30bSGordon Ross 155*4f4cb30bSGordon Rossdo_cmds() { 156*4f4cb30bSGordon Ross 157*4f4cb30bSGordon Rosscase $1 in 158*4f4cb30bSGordon Rossinstall) 159*4f4cb30bSGordon Ross # mount programs need fslib.o 160*4f4cb30bSGordon Ross (cd $SRC/cmd/fs.d && $make fslib.o) 161*4f4cb30bSGordon Ross (cd $SRC/cmd/fs.d/smbclnt && $make $1 catalog) 162*4f4cb30bSGordon Ross ;; 163*4f4cb30bSGordon Rossclean|clobber) 164*4f4cb30bSGordon Ross (cd $SRC/cmd/fs.d/smbclnt && $make $1) 165*4f4cb30bSGordon Ross (cd $SRC/cmd/fs.d && $make ${1}_local) 166*4f4cb30bSGordon Ross ;; 167*4f4cb30bSGordon Rossesac 168*4f4cb30bSGordon Ross 169*4f4cb30bSGordon Ross(cd $SRC/cmd/devfsadm && $make $1) 170*4f4cb30bSGordon Ross(cd $SRC/cmd/smbsrv && $make $1) 171*4f4cb30bSGordon Ross 172*4f4cb30bSGordon Ross# Build the MDB modules, WITH the linktest 173*4f4cb30bSGordon Ross(cd $SRC/cmd/mdb/tools && $make $1) 174*4f4cb30bSGordon Rossfor a in $mdb_arch 175*4f4cb30bSGordon Rossdo 176*4f4cb30bSGordon Ross case $1 in 177*4f4cb30bSGordon Ross install|lint) 178*4f4cb30bSGordon Ross (cd $SRC/cmd/mdb/$x/$a/kmdb && 179*4f4cb30bSGordon Ross $make kmdb_modlinktest.o ) 180*4f4cb30bSGordon Ross ;; 181*4f4cb30bSGordon Ross clean|clobber) 182*4f4cb30bSGordon Ross (cd $SRC/cmd/mdb/$x/$a/kmdb && 183*4f4cb30bSGordon Ross $make -k $1 ) 184*4f4cb30bSGordon Ross ;; 185*4f4cb30bSGordon Ross esac 186*4f4cb30bSGordon Ross 187*4f4cb30bSGordon Ross (cd $SRC/cmd/mdb/$x/$a/nsmb && 188*4f4cb30bSGordon Ross $make $1 KMDB_LINKTEST_ENABLE= ) 189*4f4cb30bSGordon Ross (cd $SRC/cmd/mdb/$x/$a/smbfs && 190*4f4cb30bSGordon Ross $make $1 KMDB_LINKTEST_ENABLE= ) 191*4f4cb30bSGordon Ross (cd $SRC/cmd/mdb/$x/$a/smbsrv && 192*4f4cb30bSGordon Ross $make $1 KMDB_LINKTEST_ENABLE= ) 193*4f4cb30bSGordon Rossdone 194*4f4cb30bSGordon Ross 195*4f4cb30bSGordon Ross(cd $SRC/cmd/Adm/sun && $make $1) 196*4f4cb30bSGordon Ross 197*4f4cb30bSGordon Ross# Deal with mode 0400 file annoyance... 198*4f4cb30bSGordon Ross# See usr/src/cmd/Adm/sun/Makefile 199*4f4cb30bSGordon Rossif [ $1 = install ]; then 200*4f4cb30bSGordon Ross chmod a+r $ROOT/var/smb/smbpasswd 201*4f4cb30bSGordon Rossfi 202*4f4cb30bSGordon Ross} 203*4f4cb30bSGordon Ross 204*4f4cb30bSGordon Ross 205*4f4cb30bSGordon Ross################################################################ 206*4f4cb30bSGordon Ross# This builds $SRC/TAGS (and cscope.files) in a helpful order. 207*4f4cb30bSGordon Ross 208*4f4cb30bSGordon Rossdo_tags() { 209*4f4cb30bSGordon Ross (cd $SRC ; 210*4f4cb30bSGordon Ross find uts/common/sys -name '*.[ch]' -print |sort 211*4f4cb30bSGordon Ross find uts/common/net -name '*.[ch]' -print |sort 212*4f4cb30bSGordon Ross find uts/common/netinet -name '*.[ch]' -print |sort 213*4f4cb30bSGordon Ross find uts/common/smb -name '*.[ch]' -print |sort 214*4f4cb30bSGordon Ross find uts/common/smbsrv -name '*.ndl' -print |sort 215*4f4cb30bSGordon Ross find uts/common/smbsrv -name '*.[ch]' -print |sort 216*4f4cb30bSGordon Ross find uts/common/fs/smbsrv -name '*.[ch]' -print |sort 217*4f4cb30bSGordon Ross find lib/libsmbfs -name '*.[ch]' -print |sort 218*4f4cb30bSGordon Ross find lib/smbsrv -name '*.[ch]' -print |sort 219*4f4cb30bSGordon Ross find cmd/smbsrv -name '*.[ch]' -print |sort 220*4f4cb30bSGordon Ross find common/smbsrv -name '*.[ch]' -print |sort 221*4f4cb30bSGordon Ross ) > $SRC/cscope.files 222*4f4cb30bSGordon Ross 223*4f4cb30bSGordon Ross (cd $SRC ; 224*4f4cb30bSGordon Ross exctags -e --langmap=c:+.ndl -h ndl -L - < cscope.files 225*4f4cb30bSGordon Ross cscope -b ) 226*4f4cb30bSGordon Ross} 227*4f4cb30bSGordon Ross 228*4f4cb30bSGordon Ross################################################################ 229*4f4cb30bSGordon Ross# This creates a tarfile one can use to update a test machine. 230*4f4cb30bSGordon Ross 231*4f4cb30bSGordon Rossdo_tar() { 232*4f4cb30bSGordon Ross files=" 233*4f4cb30bSGordon Rossusr/kernel/drv/$arch64/smbsrv 234*4f4cb30bSGordon Rossusr/kernel/drv/smbsrv 235*4f4cb30bSGordon Rossusr/kernel/kmdb/$arch64/smbsrv 236*4f4cb30bSGordon Rossusr/kernel/kmdb/smbsrv 237*4f4cb30bSGordon Rossusr/lib/fs/smb/$arch64/libshare_smb.so.1 238*4f4cb30bSGordon Rossusr/lib/fs/smb/libshare_smb.so.1 239*4f4cb30bSGordon Rossusr/lib/libsmbfs.so.1 240*4f4cb30bSGordon Rossusr/lib/mdb/kvm/$arch64/smbsrv.so 241*4f4cb30bSGordon Rossusr/lib/mdb/kvm/smbsrv.so 242*4f4cb30bSGordon Rossusr/lib/reparse/libreparse_smb.so.1 243*4f4cb30bSGordon Rossusr/lib/security/pam_smb_passwd.so.1 244*4f4cb30bSGordon Rossusr/lib/smbsrv/libmlrpc.so.1 245*4f4cb30bSGordon Rossusr/lib/smbsrv/libmlsvc.so.1 246*4f4cb30bSGordon Rossusr/lib/smbsrv/libsmb.so.1 247*4f4cb30bSGordon Rossusr/lib/smbsrv/libsmbns.so.1 248*4f4cb30bSGordon Rossusr/lib/smbsrv/smbd 249*4f4cb30bSGordon Rossusr/sbin/devfsadm 250*4f4cb30bSGordon Rossusr/sbin/smbadm 251*4f4cb30bSGordon Rossusr/sbin/smbstat 252*4f4cb30bSGordon Ross" 253*4f4cb30bSGordon Ross 254*4f4cb30bSGordon Ross (cd $ROOT && tar cfj ../../smbsrv.tar.bz2 $files) 255*4f4cb30bSGordon Ross} 256*4f4cb30bSGordon Ross 257*4f4cb30bSGordon Ross################################################################ 258*4f4cb30bSGordon Ross 259*4f4cb30bSGordon Rossif [ "$1" = "" ]; then 260*4f4cb30bSGordon Ross set '?' # force usage 261*4f4cb30bSGordon Rossfi 262*4f4cb30bSGordon Ross 263*4f4cb30bSGordon Rossset -x 264*4f4cb30bSGordon Ross 265*4f4cb30bSGordon Rossfor arg 266*4f4cb30bSGordon Rossdo 267*4f4cb30bSGordon Ross case "$arg" in 268*4f4cb30bSGordon Ross build|install) 269*4f4cb30bSGordon Ross arg=install 270*4f4cb30bSGordon Ross build_tools 271*4f4cb30bSGordon Ross set -e 272*4f4cb30bSGordon Ross do_hdrs $arg 273*4f4cb30bSGordon Ross do_kern $arg 274*4f4cb30bSGordon Ross do_libs $arg 275*4f4cb30bSGordon Ross do_cmds $arg 276*4f4cb30bSGordon Ross ;; 277*4f4cb30bSGordon Ross lint) 278*4f4cb30bSGordon Ross do_kern $arg 279*4f4cb30bSGordon Ross do_libs $arg 280*4f4cb30bSGordon Ross do_cmds $arg 281*4f4cb30bSGordon Ross ;; 282*4f4cb30bSGordon Ross clean) 283*4f4cb30bSGordon Ross do_cmds $arg 284*4f4cb30bSGordon Ross do_libs $arg 285*4f4cb30bSGordon Ross do_kern $arg 286*4f4cb30bSGordon Ross ;; 287*4f4cb30bSGordon Ross clobber) 288*4f4cb30bSGordon Ross do_cmds $arg 289*4f4cb30bSGordon Ross do_libs $arg 290*4f4cb30bSGordon Ross do_kern $arg 291*4f4cb30bSGordon Ross do_hdrs $arg 292*4f4cb30bSGordon Ross clobber_tools 293*4f4cb30bSGordon Ross ;; 294*4f4cb30bSGordon Ross tags) 295*4f4cb30bSGordon Ross do_tags 296*4f4cb30bSGordon Ross ;; 297*4f4cb30bSGordon Ross tar) 298*4f4cb30bSGordon Ross do_tar 299*4f4cb30bSGordon Ross ;; 300*4f4cb30bSGordon Ross *) 301*4f4cb30bSGordon Ross echo "Usage: $0 {build|lint|clean|clobber|tags|tar}"; 302*4f4cb30bSGordon Ross exit 1; 303*4f4cb30bSGordon Ross ;; 304*4f4cb30bSGordon Ross esac 305*4f4cb30bSGordon Rossdone 306