#!/bin/sh
################################################################################
# Copyright 1996 by Thomas E. Dickey <dickey@clark.net>                        #
# All Rights Reserved.                                                         #
#                                                                              #
# Permission to use, copy, modify, and distribute this software and its        #
# documentation for any purpose and without fee is hereby granted, provided    #
# that the above copyright notice appear in all copies and that both that      #
# copyright notice and this permission notice appear in supporting             #
# documentation, and that the name of the above listed copyright holder(s) not #
# be used in advertising or publicity pertaining to distribution of the        #
# software without specific, written prior permission. THE ABOVE LISTED        #
# COPYRIGHT HOLDER(S) DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,    #
# INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT #
# SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY SPECIAL,        #
# INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM   #
# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE   #
# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR    #
# PERFORMANCE OF THIS SOFTWARE.                                                #
################################################################################
# $Id: makellib,v 1.3 1996/07/07 23:28:28 tom Exp $
# System-dependent wrapper for 'lint' that creates a lint-library via the
# following method (XXX is the name of the library):
#	a.  If the file llib-lXXX doesn't exist, create it using the make-rule
#	b.  Process llib-lXXX with the system's lint utility, making
#	    llib-lXXX.ln
#	c.  Install llib-lXXX.ln in the lib directory.
#
# Using the intermediate file llib-lXXX bypasses a weakness of lint (passing
# through warning messages from the original source-files).
#
# There are two drawbacks to this approach:
#	a.  On a few systems, you'll have to manually-edit the llib-lXXX file
#	    to get a usable lint-library (not all C-preprocessors work well).
#	b.  The system's lint utility won't recognize -lXXX as a lint-library
#	    (Use tdlint as a wrapper; it's designed for this).
#
# Parameters:
#	$1 = library name
#	$* = C-preprocessor options
#
ARCH=`uname -s`
if test "x$ARCH" = "xSunOS" ; then
	case `uname -r` in
	5.*)	ARCH=Solaris
		;;
	esac
fi
#
DST="$HOME/lib/$ARCH/lint"
OPT=""
LLIB=""
llib=""
#
while test $# != 0
do
	case $1 in
	-L*)
		DST="$DST `echo $1|sed -e 's/^-L//'`"
		;;
	-*)
		OPT="$OPT $1"
		;;
	*)
		if test -z "$LLIB"
		then
			LLIB=$1
		else
			llib=llib-l$1
		fi
		;;
	esac
	shift
done

if test -z "$LLIB"
then
	echo '? no library name specified'
	exit 1
elif test -z "$llib"
then
	llib="llib-l$LLIB"
fi

if test ! -f $llib ; then
	if ( make $llib )
	then
		:
	else
		exit 1
	fi
fi

rm -f $llib.ln $llib.c
TARGET=$LLIB

case "$ARCH" in
AIX)
	CREATE="-uvxo$llib -Nn4000"
	TARGET=$llib.c
	ln $llib $TARGET
	;;
Solaris)
	CREATE="-C$llib"
	TARGET=$llib.c
	ln $llib $TARGET
	;;
CLIX)
	CREATE="-DLINTLIBRARY -vxo$LLIB"
	TARGET=$llib.c
	ln $llib $TARGET
	;;
IRIX)
	CREATE="-DLINTLIBRARY -vxyo$LLIB"
	TARGET=$llib.c
	ln $llib $TARGET
	;;
UNIX_SV)
	CREATE="-DLINTLIBRARY -vxyo$LLIB"
	TARGET=$llib.c
	ln $llib $TARGET
	;;
esac

echo OPT    "$OPT"
echo TARGET "$TARGET"
echo LIBNAME "$llib"
if ( lint $CREATE $OPT $TARGET )
then
	if test -f $llib.ln
	then
		for p in $HOME/lib $HOME/lib/$ARCH $HOME/lib/$ARCH/lint
		do
			if test ! -d $p
			then
				mkdir $p
			fi
		done
		for p in $DST
		do
			cp $llib.ln $p/
		done
		rm -f $llib.ln
	fi
fi
if test "x$TARGET" = "x$llib.c" ; then
	rm -f $TARGET
fi
