xref: /illumos-gate/usr/src/tools/quick/make-smbclnt (revision 0463c8009260e445fd1885cfaf98e04a586d495b)
13299f39fSGordon Ross#!/bin/ksh
23299f39fSGordon Ross#
33299f39fSGordon Ross# This file and its contents are supplied under the terms of the
43299f39fSGordon Ross# Common Development and Distribution License ("CDDL"), version 1.0.
53299f39fSGordon Ross# You may only use this file in accordance with the terms of version
63299f39fSGordon Ross# 1.0 of the CDDL.
73299f39fSGordon Ross#
83299f39fSGordon Ross# A full copy of the text of the CDDL should have accompanied this
93299f39fSGordon Ross# source.  A copy of the CDDL is also available via the Internet at
103299f39fSGordon Ross# http://www.illumos.org/license/CDDL.
113299f39fSGordon Ross#
123299f39fSGordon Ross
133299f39fSGordon Ross#
148329232eSGordon Ross# Copyright 2017 Nexenta Systems, Inc.  All rights reserved.
153299f39fSGordon Ross#
163299f39fSGordon Ross
178329232eSGordon Ross# Use ordinary make (not dmake) by default.
188329232eSGordon Rossmake=${MAKE:-make}
193299f39fSGordon Ross
203299f39fSGordon Ross# Do this if you want to use dbx or gdb
213299f39fSGordon Ross# export SOURCEDEBUG=yes
223299f39fSGordon Ross
233299f39fSGordon Ross[ -n "$SRC" ] || {
243299f39fSGordon Ross  echo "SRC not set.  Run 'ws' or 'bldenv' first."
253299f39fSGordon Ross  exit 1
263299f39fSGordon Ross}
273299f39fSGordon Ross
283299f39fSGordon Rosscpu=`uname -p`
293299f39fSGordon Rosscase $cpu in
303299f39fSGordon Rossi386)
313299f39fSGordon Ross	x=intel
323299f39fSGordon Ross	kmdb_arch="amd64"
333299f39fSGordon Ross	mdb_arch="ia32 amd64"
343299f39fSGordon Ross	arch64=amd64
353299f39fSGordon Ross	;;
363299f39fSGordon Rosssparc)
373299f39fSGordon Ross	x=sparc
383299f39fSGordon Ross	kmdb_arch=v9
393299f39fSGordon Ross	mdb_arch="v7 v9"
403299f39fSGordon Ross	arch64=sparcv9
413299f39fSGordon Ross	;;
423299f39fSGordon Ross*)  echo "Huh?" ; exit 1;;
433299f39fSGordon Rossesac
443299f39fSGordon Ross
453299f39fSGordon Ross################################################################
463299f39fSGordon Ross
473299f39fSGordon Rossbuild_tools() {
483299f39fSGordon Ross  test -f $SRC/tools/proto/root_i386-nd/opt/onbld/bin/genoffsets ||
493299f39fSGordon Ross    (cd $SRC/tools && $make install)
503299f39fSGordon Ross  (cd $SRC/common/mapfiles; $make install)
513299f39fSGordon Ross}
523299f39fSGordon Ross
533299f39fSGordon Rossclobber_tools() {
543299f39fSGordon Ross  (cd $SRC/tools && $make clobber)
553299f39fSGordon Ross  (cd $SRC/common/mapfiles; $make clobber)
563299f39fSGordon Ross}
573299f39fSGordon Ross
583299f39fSGordon Ross################################################################
593299f39fSGordon Ross
603299f39fSGordon Rossdo_hdrs() {
613299f39fSGordon Ross
623299f39fSGordon Rosstarg=$1
633299f39fSGordon Rossif [ "$targ" = clobber ]
643299f39fSGordon Rossthen
653299f39fSGordon Ross  (cd $SRC/uts && $make -k clobber_h)
663299f39fSGordon Ross  (cd $SRC/head && $make clobber)
673299f39fSGordon Rossfi
683299f39fSGordon Ross
693299f39fSGordon Rossif [ "$targ" = install ]
703299f39fSGordon Rossthen
713299f39fSGordon Ross  targ=install_h
723299f39fSGordon Ross
733299f39fSGordon Ross  # Just the parts of "make sgs" we need, and
743299f39fSGordon Ross  # skip them if they appear to be done.
753299f39fSGordon Ross  # ... stuff under $SRC
763299f39fSGordon Ross  test -f $SRC/uts/common/sys/priv_names.h ||
773299f39fSGordon Ross    (cd $SRC/uts && $make -k all_h)
783299f39fSGordon Ross
793299f39fSGordon Ross  test -f $SRC/head/rpcsvc/nispasswd.h ||
803299f39fSGordon Ross    (cd $SRC/head && $make -k install_h)
813299f39fSGordon Ross
823299f39fSGordon Ross  # ... stuff under $ROOT (proto area)
833299f39fSGordon Ross  test -d $ROOT/usr/include/sys ||
843299f39fSGordon Ross    (cd $SRC && $make rootdirs)
853299f39fSGordon Ross  test -f $ROOT/usr/include/sys/types.h ||
863299f39fSGordon Ross    (cd $SRC/uts && $make -k install_h)
873299f39fSGordon Ross  test -f $ROOT/usr/include/rpcsvc/daemon_utils.h ||
883299f39fSGordon Ross    (cd $SRC/head && $make install_h)
893299f39fSGordon Ross
903299f39fSGordon Ross  # always update the smb headers to be safe
913299f39fSGordon Ross  (cd $SRC/uts/common/smb && $make -k install_h)
923299f39fSGordon Ross
933299f39fSGordon Rossfi
943299f39fSGordon Ross
953299f39fSGordon Ross# Need some library headers too...
963299f39fSGordon Rossfor lib in \
978329232eSGordon Ross  libcmdutils \
983299f39fSGordon Ross  libcryptoutil \
998329232eSGordon Ross  libfakekernel	\
1003299f39fSGordon Ross  libmlrpc \
1013299f39fSGordon Ross  libpam \
1023299f39fSGordon Ross  libsec \
1033299f39fSGordon Ross  libshare \
1043299f39fSGordon Ross  libsmbfs \
1053299f39fSGordon Ross  passwdutil
1063299f39fSGordon Rossdo
1073299f39fSGordon Ross  (cd $SRC/lib/$lib && $make $targ)
1083299f39fSGordon Rossdone
1093299f39fSGordon Ross}
1103299f39fSGordon Ross
1113299f39fSGordon Ross################################################################
1123299f39fSGordon Ross
1133299f39fSGordon Rossdo_kern() {
1143299f39fSGordon Ross  case $1 in
1153299f39fSGordon Ross  lint) targ=modlintlib ;;
1163299f39fSGordon Ross  *) targ=$1 ;;
1173299f39fSGordon Ross  esac
1183299f39fSGordon Ross  ( unset SOURCEDEBUG ;
1193299f39fSGordon Ross  (cd $SRC/uts/$x/nsmb && $make $targ) ;
1203299f39fSGordon Ross  (cd $SRC/uts/$x/smbfs && $make $targ) )
1213299f39fSGordon Ross}
1223299f39fSGordon Ross
1233299f39fSGordon Ross################################################################
1243299f39fSGordon Ross
1253299f39fSGordon Ross# Note lib1 builds prerequisite libraries not delivered by the
1263299f39fSGordon Ross# tar file we create below.  To accelerate clean/install, we
1273299f39fSGordon Ross# skip these on clean (but still nuke them for clobber)
1283299f39fSGordon Ross
1293299f39fSGordon Rossdo_lib1() {
1308329232eSGordon Ross
1318329232eSGordon Rossfor lib in \
1328329232eSGordon Ross  libavl \
1338329232eSGordon Ross  libcmdutils
1348329232eSGordon Rossdo
1358329232eSGordon Ross  (cd $SRC/lib/$lib && $make $1)
1368329232eSGordon Rossdone
1373299f39fSGordon Ross}
1383299f39fSGordon Ross
1393299f39fSGordon Ross# lib2 builds stuff we include in the tar file,
1403299f39fSGordon Ross# or that we don't mind rebuilding after clean.
1413299f39fSGordon Ross
1423299f39fSGordon Rossdo_lib2() {
1433299f39fSGordon Ross
1443299f39fSGordon Ross(cd $SRC/lib/libsmbfs && $make $1)
1453299f39fSGordon Ross[ "$1" = install ] &&
1463299f39fSGordon Ross  (cd $SRC/lib/libsmbfs && $make _msg)
1478329232eSGordon Ross
1488329232eSGordon Rossfor lib in \
1498329232eSGordon Ross  libfakekernel \
1508329232eSGordon Ross  libsmbfs \
1518329232eSGordon Ross  libmlrpc \
1528329232eSGordon Ross  smbclnt
1538329232eSGordon Rossdo
1548329232eSGordon Ross  (cd $SRC/lib/$lib && $make $1)
1558329232eSGordon Rossdone
1568329232eSGordon Ross
1573299f39fSGordon Ross(cd $SRC/lib/libshare && $make $1 PLUGINS=smbfs)
1583299f39fSGordon Ross(cd $SRC/lib/passwdutil && $make $1)
1593299f39fSGordon Ross(cd $SRC/lib/pam_modules/smbfs && $make $1)
1603299f39fSGordon Ross
1613299f39fSGordon Ross}
1623299f39fSGordon Ross
1633299f39fSGordon Ross################################################################
1643299f39fSGordon Ross
1653299f39fSGordon Rossdo_cmds() {
1663299f39fSGordon Ross
1673299f39fSGordon Rosscase $1 in
1683299f39fSGordon Rossinstall)
1693299f39fSGordon Ross  # mount programs need fslib.o
1703299f39fSGordon Ross  (cd $SRC/cmd/fs.d && $make fslib.o)
1713299f39fSGordon Ross  (cd $SRC/cmd/fs.d/smbclnt && $make $1 catalog)
1723299f39fSGordon Ross  ;;
1733299f39fSGordon Rossclean|clobber)
1743299f39fSGordon Ross  (cd $SRC/cmd/fs.d/smbclnt && $make $1)
1753299f39fSGordon Ross  (cd $SRC/cmd/fs.d && $make ${1}_local)
1763299f39fSGordon Ross  ;;
1773299f39fSGordon Rossesac
1783299f39fSGordon Ross
1793299f39fSGordon Ross# Build the MDB modules, WITH the linktest
1803299f39fSGordon Ross(cd $SRC/cmd/mdb/tools && $make $1)
1813299f39fSGordon Ross
1823299f39fSGordon Ross# kmdb_arch is 64-bit only
1833299f39fSGordon Rossfor a in $kmdb_arch
1843299f39fSGordon Rossdo
1853299f39fSGordon Ross  case $1 in
1863299f39fSGordon Ross  install|lint)
1873299f39fSGordon Ross    (cd $SRC/cmd/mdb/$x/$a/kmdb &&
1883299f39fSGordon Ross	$make kmdb_modlinktest.o )
1893299f39fSGordon Ross    ;;
1903299f39fSGordon Ross  clean|clobber)
1913299f39fSGordon Ross    (cd $SRC/cmd/mdb/$x/$a/kmdb &&
1923299f39fSGordon Ross	$make -k $1 )
1933299f39fSGordon Ross    ;;
1943299f39fSGordon Ross  esac
1953299f39fSGordon Ross
1963299f39fSGordon Ross  (cd $SRC/cmd/mdb/$x/$a/nsmb &&
1973299f39fSGordon Ross	$make $1 KMDB_LINKTEST_ENABLE= )
1983299f39fSGordon Ross  (cd $SRC/cmd/mdb/$x/$a/smbfs &&
1993299f39fSGordon Ross	$make $1 KMDB_LINKTEST_ENABLE= )
2003299f39fSGordon Rossdone
2018329232eSGordon Ross
2028329232eSGordon Ross# mdb_arch is both 32-bit & 64-bit
2038329232eSGordon Rossfor a in $mdb_arch
2048329232eSGordon Rossdo
2058329232eSGordon Ross  (cd $SRC/cmd/mdb/$x/$a/libfknsmb &&
2068329232eSGordon Ross	$make $1 )
2078329232eSGordon Ross  (cd $SRC/cmd/mdb/$x/$a/libfksmbfs &&
2088329232eSGordon Ross	$make $1 )
2098329232eSGordon Rossdone
2103299f39fSGordon Ross}
2113299f39fSGordon Ross
2123299f39fSGordon Ross
2133299f39fSGordon Ross################################################################
2143299f39fSGordon Ross# This builds $SRC/TAGS (and cscope.files) in a helpful order.
2153299f39fSGordon Ross
2163299f39fSGordon Rossdo_tags() {
2173299f39fSGordon Ross	(cd $SRC ;
2183299f39fSGordon Ross	find uts/common/sys -name '*.[ch]' -print |sort
2193299f39fSGordon Ross	find uts/common/net -name '*.[ch]' -print |sort
2203299f39fSGordon Ross	find uts/common/netinet -name '*.[ch]' -print |sort
2213299f39fSGordon Ross	find uts/common/smb -name '*.[ch]' -print |sort
2223299f39fSGordon Ross	find uts/common/netsmb -name '*.[ch]' -print |sort
2233299f39fSGordon Ross	find uts/common/fs/smbclnt -name '*.[ch]' -print |sort
2243299f39fSGordon Ross	find head -name '*.h' -print |sort
2258329232eSGordon Ross	find lib/smbclnt  -name '*.[ch]' -print |sort
2263299f39fSGordon Ross	find lib/libsmbfs -name '*.[ch]' -print |sort
2273299f39fSGordon Ross	find cmd/fs.d/smbclnt -name '*.[ch]' -print |sort
2283299f39fSGordon Ross	find common/smbclnt -name '*.[ch]' -print |sort
2293299f39fSGordon Ross	) > $SRC/cscope.files
2303299f39fSGordon Ross
2313299f39fSGordon Ross	(cd $SRC ;
2323299f39fSGordon Ross	exctags -e --langmap=c:+.ndl -h ndl -L - < cscope.files
2333299f39fSGordon Ross	cscope -b )
2343299f39fSGordon Ross}
2353299f39fSGordon Ross
2363299f39fSGordon Ross################################################################
2373299f39fSGordon Ross# This creates a tarfile one can use to update a test machine.
2383299f39fSGordon Ross
2393299f39fSGordon Rossdo_tar() {
2403299f39fSGordon Ross	git_rev=`git rev-parse --short=8 HEAD`
2413299f39fSGordon Ross	files="
242*0463c800SGordon Rossetc/security/exec_attr.d/SUNWsmbfs
2433299f39fSGordon Rosslib/svc/manifest/network/smb/client.xml
2443299f39fSGordon Rosslib/svc/method/smb-client
2453299f39fSGordon Rossusr/bin/smbutil
2463299f39fSGordon Rossusr/kernel/drv/$arch64/nsmb
2473299f39fSGordon Rossusr/kernel/fs/$arch64/smbfs
2483299f39fSGordon Rossusr/kernel/kmdb/$arch64/nsmb
2493299f39fSGordon Rossusr/kernel/kmdb/$arch64/smbfs
2503299f39fSGordon Rossusr/lib/$arch64/libsmbfs.so.1
2513299f39fSGordon Rossusr/lib/fs/smbfs/$arch64/libshare_smbfs.so.1
2523299f39fSGordon Rossusr/lib/fs/smbfs/chacl
2533299f39fSGordon Rossusr/lib/fs/smbfs/dfshares
2543299f39fSGordon Rossusr/lib/fs/smbfs/libshare_smbfs.so.1
2553299f39fSGordon Rossusr/lib/fs/smbfs/lsacl
2563299f39fSGordon Rossusr/lib/fs/smbfs/mount
2573299f39fSGordon Rossusr/lib/fs/smbfs/share
2583299f39fSGordon Rossusr/lib/fs/smbfs/umount
2593299f39fSGordon Rossusr/lib/fs/smbfs/unshare
2603299f39fSGordon Rossusr/lib/libmlrpc.so.2
2613299f39fSGordon Rossusr/lib/libsmbfs.so.1
2623299f39fSGordon Rossusr/lib/mdb/kvm/$arch64/nsmb.so
2633299f39fSGordon Rossusr/lib/mdb/kvm/$arch64/smbfs.so
2643299f39fSGordon Rossusr/lib/security/$arch64/pam_smbfs_login.so.1
2653299f39fSGordon Rossusr/lib/security/pam_smbfs_login.so.1
2663299f39fSGordon Rossusr/lib/smbfs/smbiod
2673299f39fSGordon Rossusr/lib/smbfs/smbiod-svc
2683299f39fSGordon Ross"
2693299f39fSGordon Ross
2703299f39fSGordon Ross	(cd $ROOT && tar cfj ../../smbclnt-${git_rev}.tar.bz2 $files)
2713299f39fSGordon Ross}
2723299f39fSGordon Ross
2733299f39fSGordon Ross################################################################
2743299f39fSGordon Ross
2753299f39fSGordon Rossif [ "$1" = "" ]; then
2763299f39fSGordon Ross  set '?' # force usage
2773299f39fSGordon Rossfi
2783299f39fSGordon Ross
2793299f39fSGordon Rossset -x
2803299f39fSGordon Ross
2813299f39fSGordon Rossfor arg
2823299f39fSGordon Rossdo
2833299f39fSGordon Ross  case "$arg" in
2843299f39fSGordon Ross  install)
2853299f39fSGordon Ross    build_tools
2863299f39fSGordon Ross    set -e
2873299f39fSGordon Ross    do_hdrs $arg
2883299f39fSGordon Ross    do_kern $arg
2893299f39fSGordon Ross    do_lib1 $arg
2903299f39fSGordon Ross    do_lib2 $arg
2913299f39fSGordon Ross    do_cmds $arg
2923299f39fSGordon Ross    ;;
2933299f39fSGordon Ross  lint)
2943299f39fSGordon Ross    do_kern $arg
2953299f39fSGordon Ross    do_lib1 $arg
2963299f39fSGordon Ross    do_lib2 $arg
2973299f39fSGordon Ross    do_cmds $arg
2983299f39fSGordon Ross    ;;
2993299f39fSGordon Ross  clean)
3003299f39fSGordon Ross    # intentionally skip: lib1, hdrs, tools
3013299f39fSGordon Ross    do_cmds $arg
3023299f39fSGordon Ross    do_lib2 $arg
3033299f39fSGordon Ross    do_kern $arg
3043299f39fSGordon Ross    ;;
3053299f39fSGordon Ross  clobber)
3063299f39fSGordon Ross    do_cmds $arg
3073299f39fSGordon Ross    do_lib2 $arg
3083299f39fSGordon Ross    do_lib1 $arg
3093299f39fSGordon Ross    do_kern $arg
3103299f39fSGordon Ross    do_hdrs $arg
3113299f39fSGordon Ross    clobber_tools
3123299f39fSGordon Ross    ;;
3133299f39fSGordon Ross  tags)
3143299f39fSGordon Ross    do_tags
3153299f39fSGordon Ross    ;;
3163299f39fSGordon Ross  tar)
3173299f39fSGordon Ross    do_tar
3183299f39fSGordon Ross    ;;
3193299f39fSGordon Ross  *)
3203299f39fSGordon Ross    echo "Usage: $0 {install|lint|clean|clobber|tags|tar}";
3213299f39fSGordon Ross    exit 1;
3223299f39fSGordon Ross    ;;
3233299f39fSGordon Ross  esac
3243299f39fSGordon Rossdone
325