1 #!/bin/ksh -p 2 # 3 # CDDL HEADER START 4 # 5 # The contents of this file are subject to the terms of the 6 # Common Development and Distribution License, Version 1.0 only 7 # (the "License"). You may not use this file except in compliance 8 # with the License. 9 # 10 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 11 # or http://www.opensolaris.org/os/licensing. 12 # See the License for the specific language governing permissions 13 # and limitations under the License. 14 # 15 # When distributing Covered Code, include this CDDL HEADER in each 16 # file and include the License file at usr/src/OPENSOLARIS.LICENSE. 17 # If applicable, add the following below this CDDL HEADER, with the 18 # fields enclosed by brackets "[]" replaced with your own identifying 19 # information: Portions Copyright [yyyy] [name of copyright owner] 20 # 21 # CDDL HEADER END 22 # 23 # 24 # Copyright 2005 Sun Microsystems, Inc. All rights reserved. 25 # Use is subject to license terms. 26 # 27 # ident "%Z%%M% %I% %E% SMI" 28 # 29 30 # 31 # The CDPATH variable causes ksh's `cd' builtin to emit messages to stdout 32 # under certain circumstances, which can really screw things up; unset it. 33 # 34 unset CDPATH 35 36 PROG=`basename $0` 37 PATH=/opt/onbld/bin:$PATH export PATH 38 if [ -n "$BUILD_TOOLS" ]; then 39 PATH=$BUILD_TOOLS/onbld/bin:$PATH export PATH 40 fi 41 42 CONF=tools/scripts/build_cscope.conf 43 44 # 45 # Print the provided failure message and exit with an error. 46 # 47 fail() 48 { 49 echo $PROG: $@ > /dev/stderr 50 exit 1 51 } 52 53 if [ $# -ne 1 ]; then 54 echo "Usage: $PROG <env_file>" 55 exit 1 56 fi 57 58 # 59 # Setup environment variables 60 # 61 if [ -f "$1" ]; then 62 if [[ $1 = */* ]]; then 63 . $1 64 else 65 . ./$1 66 fi 67 elif [ -f "/opt/onbld/env/$1" ]; then 68 . "/opt/onbld/env/$1" 69 else 70 fail "cannot find env file as $1 or /opt/onbld/env/$1" 71 fi 72 73 [ -z "$SRC" ] && fail "\$SRC is not set" 74 [ ! -d "$SRC" ] && fail "\$SRC ($SRC) is not a directory" 75 76 # 77 # Despite our name, we actually build cscope, ctags, and etags 78 # cross-references. 79 # 80 cd $SRC 81 while read name flags dirs; do 82 [ "$name" = "" -o "$name" = "#" ] && continue 83 [ "$flags" = "\"\"" ] && flags= 84 xref -c $dirs 85 xref $flags $dirs || fail "cannot build $name cross-reference" 86 done < $CONF 87