4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
23 # Copyright 2007 Sun Microsystems, Inc. All rights reserved.
24 # Use is subject to license terms.
28 echo expected one argument
: '<'dtrace-path
'>'
41 cfile
=${TMPDIR:-/tmp}/inc.$$.
$file.c
42 cofile
=${TMPDIR:-/tmp}/inc.$$.
$file
49 if $CC $CFLAGS -o $cofile $cfile >/dev
/null
2>&1; then
50 $dtrace -xerrtags -C -s /dev
/stdin \
51 >/dev
/null
2>$errfile <<EOF
59 echo $inc failed
: `cat $errfile | head -1` > $ofile
61 echo $inc succeeded
> $ofile
66 rm -f $cofile $cfile 2>/dev
/null
70 echo "$0: bad compiler: $CC" >& 2
74 concurrency
=`psrinfo | wc -l`
75 let concurrency
=concurrency
*4
78 files
=/usr
/include
/sys
/*.h
81 # There are a few files in /usr/include/sys that are known to be bad -- usually
82 # because they include static globals (!) or function bodies (!!) in the header
83 # file. Hopefully these remain sufficiently few that the O(#files * #badfiles)
84 # algorithm, below, doesn't become a problem. (And yes, writing scripts in
85 # something other than ksh would probably be a good idea.) If this script
86 # becomes a problem, kindly fix it by reducing the number of bad files! (That
87 # is, fix it by fixing the broken file, not the broken script.)
100 kiconv_ja_jis_to_unicode.h \
101 kiconv_ja_unicode_to_jis.h \
117 for inc
in $files; do
119 for bad
in $badfiles; do
120 if [ "$file" = "$bad" ]; then
125 ofile
=${TMPDIR:-/tmp}/inc.
$file.$$.out
126 errfile
=${TMPDIR:-/tmp}/inc.
$file.$$.err
127 doit
$file $ofile $errfile &
130 if [ $i -eq $concurrency ]; then
132 # This isn't optimal -- it creates a highly fluctuating load
133 # as we wait for all work to complete -- but it's an easy
134 # way of parallelizing work.
143 bigofile
=${TMPDIR:-/tmp}/inc.$$.out
145 for inc
in $files; do
147 ofile
=${TMPDIR:-/tmp}/inc.
$file.$$.out
149 if [ -f $ofile ]; then
150 cat $ofile >> $bigofile
155 status
=$
(grep "failed:" $bigofile |
wc -l)