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# 1410b444a8SGordon Ross# Copyright 2014 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 2310b444a8SGordon Ross# Do this if you want to use dbx or gdb 2410b444a8SGordon 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 3510b444a8SGordon Ross mdb_arch="ia32 amd64" 3610b444a8SGordon Ross arch64=amd64 3710b444a8SGordon Ross ;; 3810b444a8SGordon Rosssparc) 3910b444a8SGordon Ross x=sparc 4010b444a8SGordon Ross mdb_arch=v9 4110b444a8SGordon Ross arch64=sparcv9 4210b444a8SGordon Ross ;; 4310b444a8SGordon Ross*) echo "Huh?" ; exit 1;; 4410b444a8SGordon Rossesac 4510b444a8SGordon Ross 4610b444a8SGordon Ross################################################################ 4710b444a8SGordon Ross 4810b444a8SGordon Rossbuild_tools() { 4910b444a8SGordon Ross test -f $SRC/tools/proto/root_i386-nd/opt/onbld/bin/genoffsets || 5010b444a8SGordon Ross (cd $SRC/tools && $make install) 5110b444a8SGordon Ross (cd $SRC/common/mapfiles; $make install) 5210b444a8SGordon Ross} 5310b444a8SGordon Ross 5410b444a8SGordon Rossclobber_tools() { 5510b444a8SGordon Ross (cd $SRC/tools && $make clobber) 5610b444a8SGordon Ross (cd $SRC/common/mapfiles; $make clobber) 5710b444a8SGordon Ross} 5810b444a8SGordon Ross 5910b444a8SGordon Ross################################################################ 6010b444a8SGordon Ross 6110b444a8SGordon Rossdo_hdrs() { 6210b444a8SGordon Ross 6310b444a8SGordon Rosstarg=$1 6410b444a8SGordon Rossif [ "$targ" = clobber ] 6510b444a8SGordon Rossthen 6610b444a8SGordon Ross (cd $SRC/uts && $make -k clobber_h) 6710b444a8SGordon Ross (cd $SRC/head && $make clobber) 6810b444a8SGordon Rossfi 6910b444a8SGordon Ross 7010b444a8SGordon Rossif [ "$targ" = install ] 7110b444a8SGordon Rossthen 7210b444a8SGordon Ross targ=install_h 7310b444a8SGordon Ross 7410b444a8SGordon Ross # Just the parts of "make sgs" we need, and 7510b444a8SGordon Ross # skip them if they appear to be done. 7610b444a8SGordon Ross # ... stuff under $SRC 7710b444a8SGordon Ross test -f $SRC/uts/common/sys/priv_names.h || 7810b444a8SGordon Ross (cd $SRC/uts && $make -k all_h) 7910b444a8SGordon Ross 8010b444a8SGordon Ross test -f $SRC/head/rpcsvc/nispasswd.h || 8110b444a8SGordon Ross (cd $SRC/head && $make -k install_h) 8210b444a8SGordon Ross 8310b444a8SGordon Ross # ... stuff under $ROOT (proto area) 8410b444a8SGordon Ross test -d $ROOT/usr/include/sys || 8510b444a8SGordon Ross (cd $SRC && $make rootdirs) 8610b444a8SGordon Ross test -f $ROOT/usr/include/sys/types.h || 8710b444a8SGordon Ross (cd $SRC/uts && $make -k install_h) 8810b444a8SGordon Ross test -f $ROOT/usr/include/rpcsvc/daemon_utils.h || 8910b444a8SGordon Ross (cd $SRC/head && $make install_h) 9010b444a8SGordon Ross 9110b444a8SGordon Ross # system and smbsrv headers (we need to build libsmb) 9210b444a8SGordon Ross (cd $SRC/uts/common/sys && $make -k install_h) 9310b444a8SGordon Ross (cd $SRC/uts/common/smb && $make -k install_h) 9410b444a8SGordon Ross (cd $SRC/uts/common/smbsrv && $make -k install_h) 9510b444a8SGordon Ross 9610b444a8SGordon Rossfi 9710b444a8SGordon Ross 9810b444a8SGordon Ross# Need some library headers too... 9910b444a8SGordon Rossfor lib in \ 100*b3700b07SGordon Ross libads \ 10110b444a8SGordon Ross libbsm \ 10210b444a8SGordon Ross libcmdutils \ 10310b444a8SGordon Ross libcryptoutil \ 10410b444a8SGordon Ross libdevid \ 10510b444a8SGordon Ross libgss \ 10610b444a8SGordon Ross libkrb5 \ 10710b444a8SGordon Ross libldap5 \ 10810b444a8SGordon Ross libidmap \ 10910b444a8SGordon Ross libsmbfs \ 11010b444a8SGordon Ross libsqlite \ 11110b444a8SGordon Ross libuutil 11210b444a8SGordon Rossdo 11310b444a8SGordon Ross (cd $SRC/lib/$lib && $make $targ) 11410b444a8SGordon Rossdone 11510b444a8SGordon Ross} 11610b444a8SGordon Ross 11710b444a8SGordon Ross################################################################ 11810b444a8SGordon Ross 11910b444a8SGordon Rossdo_kern() { 12010b444a8SGordon Ross case $1 in 12110b444a8SGordon Ross lint) targ=modlintlib ;; 12210b444a8SGordon Ross *) targ=$1 ;; 12310b444a8SGordon Ross esac 12410b444a8SGordon Ross ( unset SOURCEDEBUG ; 12510b444a8SGordon Ross (cd $SRC/uts/$x/idmap && $make $targ) ) 12610b444a8SGordon Ross} 12710b444a8SGordon Ross 12810b444a8SGordon Ross################################################################ 12910b444a8SGordon Ross 13010b444a8SGordon Rossdo_libs() { 13110b444a8SGordon Ross 13210b444a8SGordon Rossfor lib in \ 13310b444a8SGordon Ross libavl \ 13410b444a8SGordon Ross libcmdutils \ 13510b444a8SGordon Ross libldap5 \ 13610b444a8SGordon Ross libadutils \ 13710b444a8SGordon Ross libuutil \ 13810b444a8SGordon Ross libidmap \ 139*b3700b07SGordon Ross libads \ 14010b444a8SGordon Ross libsmbfs \ 14110b444a8SGordon Ross libsqlite \ 14210b444a8SGordon Ross nsswitch/ad 14310b444a8SGordon Rossdo 14410b444a8SGordon Ross (cd $SRC/lib/$lib && $make $1) 14510b444a8SGordon Rossdone 14610b444a8SGordon Ross 14710b444a8SGordon Ross# need libsmb for cmd/idmap/idmapd (and libsmbfs for libsmb) 14810b444a8SGordon Ross(cd $SRC/lib/smbsrv/libsmb && $make $1) 14910b444a8SGordon Ross 15010b444a8SGordon Ross} 15110b444a8SGordon Ross 15210b444a8SGordon Ross################################################################ 15310b444a8SGordon Ross 15410b444a8SGordon Rossdo_cmds() { 15510b444a8SGordon Ross 15610b444a8SGordon Ross(cd $SRC/cmd/idmap && $make $1) 15710b444a8SGordon Ross 15810b444a8SGordon Ross} 15910b444a8SGordon Ross 16010b444a8SGordon Ross 16110b444a8SGordon Ross################################################################ 16210b444a8SGordon Ross# This builds $SRC/TAGS (and cscope.files) in a helpful order. 16310b444a8SGordon Ross 16410b444a8SGordon Rossdo_tags() { 16510b444a8SGordon Ross (cd $SRC ; 16610b444a8SGordon Ross find uts/common/sys -name '*.[ch]' -print |sort 16710b444a8SGordon Ross find uts/common/net -name '*.[ch]' -print |sort 16810b444a8SGordon Ross find uts/common/netinet -name '*.[ch]' -print |sort 16910b444a8SGordon Ross find uts/common/rpcsvc -name '*.[ch]' -print |sort 17010b444a8SGordon Ross find uts/common/idmap -name '*.[ch]' -print |sort 17110b444a8SGordon Ross find head -name '*.h' -print |sort 17210b444a8SGordon Ross find lib/libidmap -name '*.[ch]' -print |sort 17310b444a8SGordon Ross find lib/libadutils -name '*.[ch]' -print |sort 17410b444a8SGordon Ross find lib/libldap5 -name '*.[ch]' -print |sort 17510b444a8SGordon Ross find cmd/idmap -name '*.[ch]' -print |sort 17610b444a8SGordon Ross ) > $SRC/cscope.files 17710b444a8SGordon Ross 17810b444a8SGordon Ross (cd $SRC ; 17910b444a8SGordon Ross exctags -e --langmap=c:+.ndl -h ndl -L - < cscope.files 18010b444a8SGordon Ross cscope -b ) 18110b444a8SGordon Ross} 18210b444a8SGordon Ross 18310b444a8SGordon Ross################################################################ 18410b444a8SGordon Ross# This creates a tarfile one can use to update a test machine. 18510b444a8SGordon Ross 18610b444a8SGordon Rossdo_tar() { 18710b444a8SGordon Ross git_rev=`git rev-parse --short=8 HEAD` 18810b444a8SGordon Ross files=" 18910b444a8SGordon Rosslib/svc/manifest/system/idmap.xml 19010b444a8SGordon Rossusr/lib/idmapd 191*b3700b07SGordon Rossusr/lib/libads.so.1 192*b3700b07SGordon Rossusr/lib/$arch64/libads.so.1 19310b444a8SGordon Rossusr/lib/libadutils.so.1 19410b444a8SGordon Rossusr/lib/$arch64/libadutils.so.1 19510b444a8SGordon Rossusr/lib/libidmap.so.1 19610b444a8SGordon Rossusr/lib/$arch64/libidmap.so.1 19710b444a8SGordon Rossusr/lib/libldap.so.5 19810b444a8SGordon Rossusr/lib/$arch64/libldap.so.5 19910b444a8SGordon Rossusr/lib/nss_ad.so.1 20010b444a8SGordon Rossusr/lib/$arch64/nss_ad.so.1 20110b444a8SGordon Rossusr/bin/test-getdc 20210b444a8SGordon Rossusr/sbin/idmap 20310b444a8SGordon Rossusr/sbin/nltest 20410b444a8SGordon Ross" 20510b444a8SGordon Ross 20610b444a8SGordon Ross (cd $ROOT && tar cfj ../../idmap-${git_rev}.tar.bz2 $files) 20710b444a8SGordon Ross} 20810b444a8SGordon Ross 20910b444a8SGordon Ross################################################################ 21010b444a8SGordon Ross 21110b444a8SGordon Rossif [ "$1" = "" ]; then 21210b444a8SGordon Ross set '?' # force usage 21310b444a8SGordon Rossfi 21410b444a8SGordon Ross 21510b444a8SGordon Rossset -x 21610b444a8SGordon Ross 21710b444a8SGordon Rossfor arg 21810b444a8SGordon Rossdo 21910b444a8SGordon Ross case "$arg" in 22010b444a8SGordon Ross build|install) 22110b444a8SGordon Ross arg=install 22210b444a8SGordon Ross build_tools 22310b444a8SGordon Ross set -e 22410b444a8SGordon Ross do_hdrs $arg 22510b444a8SGordon Ross do_kern $arg 22610b444a8SGordon Ross do_libs $arg 22710b444a8SGordon Ross do_cmds $arg 22810b444a8SGordon Ross ;; 22910b444a8SGordon Ross lint) 23010b444a8SGordon Ross do_kern $arg 23110b444a8SGordon Ross do_libs $arg 23210b444a8SGordon Ross do_cmds $arg 23310b444a8SGordon Ross ;; 23410b444a8SGordon Ross clean) 23510b444a8SGordon Ross do_cmds $arg 23610b444a8SGordon Ross do_libs $arg 23710b444a8SGordon Ross do_kern $arg 23810b444a8SGordon Ross ;; 23910b444a8SGordon Ross clobber) 24010b444a8SGordon Ross do_cmds $arg 24110b444a8SGordon Ross do_libs $arg 24210b444a8SGordon Ross do_kern $arg 24310b444a8SGordon Ross do_hdrs $arg 24410b444a8SGordon Ross clobber_tools 24510b444a8SGordon Ross ;; 24610b444a8SGordon Ross tags) 24710b444a8SGordon Ross do_tags 24810b444a8SGordon Ross ;; 24910b444a8SGordon Ross tar) 25010b444a8SGordon Ross do_tar 25110b444a8SGordon Ross ;; 25210b444a8SGordon Ross *) 25310b444a8SGordon Ross echo "Usage: $0 {build|lint|clean|clobber|tags|tar}"; 25410b444a8SGordon Ross exit 1; 25510b444a8SGordon Ross ;; 25610b444a8SGordon Ross esac 25710b444a8SGordon Rossdone 258