xref: /freebsd/contrib/ncurses/misc/makellib (revision 0e3d540892016a47f6a68ec9ba2879d35ce5f7c2)
10e3d5408SPeter Wemm#!/bin/sh
20e3d5408SPeter Wemm##############################################################################
30e3d5408SPeter Wemm# Copyright (c) 1998 Free Software Foundation, Inc.                          #
40e3d5408SPeter Wemm#                                                                            #
50e3d5408SPeter Wemm# Permission is hereby granted, free of charge, to any person obtaining a    #
60e3d5408SPeter Wemm# copy of this software and associated documentation files (the "Software"), #
70e3d5408SPeter Wemm# to deal in the Software without restriction, including without limitation  #
80e3d5408SPeter Wemm# the rights to use, copy, modify, merge, publish, distribute, distribute    #
90e3d5408SPeter Wemm# with modifications, sublicense, and/or sell copies of the Software, and to #
100e3d5408SPeter Wemm# permit persons to whom the Software is furnished to do so, subject to the  #
110e3d5408SPeter Wemm# following conditions:                                                      #
120e3d5408SPeter Wemm#                                                                            #
130e3d5408SPeter Wemm# The above copyright notice and this permission notice shall be included in #
140e3d5408SPeter Wemm# all copies or substantial portions of the Software.                        #
150e3d5408SPeter Wemm#                                                                            #
160e3d5408SPeter Wemm# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR #
170e3d5408SPeter Wemm# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   #
180e3d5408SPeter Wemm# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL    #
190e3d5408SPeter Wemm# THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER      #
200e3d5408SPeter Wemm# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING    #
210e3d5408SPeter Wemm# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER        #
220e3d5408SPeter Wemm# DEALINGS IN THE SOFTWARE.                                                  #
230e3d5408SPeter Wemm#                                                                            #
240e3d5408SPeter Wemm# Except as contained in this notice, the name(s) of the above copyright     #
250e3d5408SPeter Wemm# holders shall not be used in advertising or otherwise to promote the sale, #
260e3d5408SPeter Wemm# use or other dealings in this Software without prior written               #
270e3d5408SPeter Wemm# authorization.                                                             #
280e3d5408SPeter Wemm##############################################################################
290e3d5408SPeter Wemm#
300e3d5408SPeter Wemm# Author: Thomas E. Dickey <dickey@clark.net> 1996,1997
310e3d5408SPeter Wemm#
320e3d5408SPeter Wemm# $Id: makellib,v 1.7 1998/02/11 12:13:50 tom Exp $
330e3d5408SPeter Wemm# System-dependent wrapper for 'lint' that creates a lint-library via the
340e3d5408SPeter Wemm# following method (XXX is the name of the library):
350e3d5408SPeter Wemm#	a.  If the file llib-lXXX doesn't exist, create it using the make-rule
360e3d5408SPeter Wemm#	b.  Process llib-lXXX with the system's lint utility, making
370e3d5408SPeter Wemm#	    llib-lXXX.ln
380e3d5408SPeter Wemm#	c.  Install llib-lXXX.ln in the lib directory.
390e3d5408SPeter Wemm#
400e3d5408SPeter Wemm# Using the intermediate file llib-lXXX bypasses a weakness of lint (passing
410e3d5408SPeter Wemm# through warning messages from the original source-files).
420e3d5408SPeter Wemm#
430e3d5408SPeter Wemm# There are two drawbacks to this approach:
440e3d5408SPeter Wemm#	a.  On a few systems, you'll have to manually-edit the llib-lXXX file
450e3d5408SPeter Wemm#	    to get a usable lint-library (not all C-preprocessors work well).
460e3d5408SPeter Wemm#	b.  The system's lint utility won't recognize -lXXX as a lint-library
470e3d5408SPeter Wemm#	    (Use tdlint as a wrapper; it's designed for this).
480e3d5408SPeter Wemm#
490e3d5408SPeter Wemm# Parameters:
500e3d5408SPeter Wemm#	$1 = library name
510e3d5408SPeter Wemm#	$* = C-preprocessor options
520e3d5408SPeter Wemm#
530e3d5408SPeter WemmARCH=`uname -s`
540e3d5408SPeter Wemmif test "x$ARCH" = "xSunOS" ; then
550e3d5408SPeter Wemm	case `uname -r` in
560e3d5408SPeter Wemm	5.*)	ARCH=Solaris
570e3d5408SPeter Wemm		;;
580e3d5408SPeter Wemm	esac
590e3d5408SPeter Wemmfi
600e3d5408SPeter Wemm#
610e3d5408SPeter WemmDST="$HOME/lib/$ARCH/lint"
620e3d5408SPeter WemmOPT=""
630e3d5408SPeter WemmLLIB=""
640e3d5408SPeter Wemmllib=""
650e3d5408SPeter Wemm#
660e3d5408SPeter Wemmwhile test $# != 0
670e3d5408SPeter Wemmdo
680e3d5408SPeter Wemm	case $1 in
690e3d5408SPeter Wemm	-L*)
700e3d5408SPeter Wemm		DST="$DST `echo $1|sed -e 's/^-L//'`"
710e3d5408SPeter Wemm		;;
720e3d5408SPeter Wemm	-*)
730e3d5408SPeter Wemm		OPT="$OPT $1"
740e3d5408SPeter Wemm		;;
750e3d5408SPeter Wemm	*)
760e3d5408SPeter Wemm		if test -z "$LLIB"
770e3d5408SPeter Wemm		then
780e3d5408SPeter Wemm			LLIB=$1
790e3d5408SPeter Wemm		else
800e3d5408SPeter Wemm			llib=llib-l$1
810e3d5408SPeter Wemm		fi
820e3d5408SPeter Wemm		;;
830e3d5408SPeter Wemm	esac
840e3d5408SPeter Wemm	shift
850e3d5408SPeter Wemmdone
860e3d5408SPeter Wemm
870e3d5408SPeter Wemmif test -z "$LLIB"
880e3d5408SPeter Wemmthen
890e3d5408SPeter Wemm	echo '? no library name specified'
900e3d5408SPeter Wemm	exit 1
910e3d5408SPeter Wemmelif test -z "$llib"
920e3d5408SPeter Wemmthen
930e3d5408SPeter Wemm	llib="llib-l$LLIB"
940e3d5408SPeter Wemmfi
950e3d5408SPeter Wemm
960e3d5408SPeter Wemmif test ! -f $llib ; then
970e3d5408SPeter Wemm	if ( make $llib )
980e3d5408SPeter Wemm	then
990e3d5408SPeter Wemm		:
1000e3d5408SPeter Wemm	else
1010e3d5408SPeter Wemm		exit 1
1020e3d5408SPeter Wemm	fi
1030e3d5408SPeter Wemmfi
1040e3d5408SPeter Wemm
1050e3d5408SPeter Wemmrm -f $llib.ln $llib.c
1060e3d5408SPeter WemmTARGET=$LLIB
1070e3d5408SPeter Wemm
1080e3d5408SPeter Wemmcase "$ARCH" in
1090e3d5408SPeter WemmAIX)
1100e3d5408SPeter Wemm	CREATE="-uvxo$LLIB -Nn4000"
1110e3d5408SPeter Wemm	TARGET=$llib.c
1120e3d5408SPeter Wemm	ln $llib $TARGET
1130e3d5408SPeter Wemm	;;
1140e3d5408SPeter WemmSolaris)
1150e3d5408SPeter Wemm	CREATE="-C$llib"
1160e3d5408SPeter Wemm	TARGET=$llib.c
1170e3d5408SPeter Wemm	ln $llib $TARGET
1180e3d5408SPeter Wemm	;;
1190e3d5408SPeter WemmCLIX)
1200e3d5408SPeter Wemm	CREATE="-DLINTLIBRARY -vxo$LLIB"
1210e3d5408SPeter Wemm	TARGET=$llib.c
1220e3d5408SPeter Wemm	ln $llib $TARGET
1230e3d5408SPeter Wemm	;;
1240e3d5408SPeter WemmIRIX*)
1250e3d5408SPeter Wemm	CREATE="-DLINTLIBRARY -vxyo$LLIB"
1260e3d5408SPeter Wemm	TARGET=$llib.c
1270e3d5408SPeter Wemm	ln $llib $TARGET
1280e3d5408SPeter Wemm	;;
1290e3d5408SPeter WemmUNIX_SV)
1300e3d5408SPeter Wemm	CREATE="-DLINTLIBRARY -vxyo$LLIB"
1310e3d5408SPeter Wemm	TARGET=$llib.c
1320e3d5408SPeter Wemm	ln $llib $TARGET
1330e3d5408SPeter Wemm	;;
1340e3d5408SPeter Wemm*)
1350e3d5408SPeter Wemm	echo "Sorry.  I do not know how to build a lint-library for $ARCH"
1360e3d5408SPeter Wemm	exit 1
1370e3d5408SPeter Wemmesac
1380e3d5408SPeter Wemm
1390e3d5408SPeter Wemmecho OPT    "$OPT"
1400e3d5408SPeter Wemmecho TARGET "$TARGET"
1410e3d5408SPeter Wemmecho LIBNAME "$llib"
1420e3d5408SPeter Wemmif ( lint $CREATE $OPT $TARGET )
1430e3d5408SPeter Wemmthen
1440e3d5408SPeter Wemm	if test -f $llib.ln
1450e3d5408SPeter Wemm	then
1460e3d5408SPeter Wemm		for p in $HOME/lib $HOME/lib/$ARCH $HOME/lib/$ARCH/lint
1470e3d5408SPeter Wemm		do
1480e3d5408SPeter Wemm			if test ! -d $p
1490e3d5408SPeter Wemm			then
1500e3d5408SPeter Wemm				mkdir $p
1510e3d5408SPeter Wemm			fi
1520e3d5408SPeter Wemm		done
1530e3d5408SPeter Wemm		for p in $DST
1540e3d5408SPeter Wemm		do
1550e3d5408SPeter Wemm			cp $llib.ln $p/
1560e3d5408SPeter Wemm		done
1570e3d5408SPeter Wemm		rm -f $llib.ln
1580e3d5408SPeter Wemm	fi
1590e3d5408SPeter Wemmfi
1600e3d5408SPeter Wemmif test "x$TARGET" = "x$llib.c" ; then
1610e3d5408SPeter Wemm	rm -f $TARGET
1620e3d5408SPeter Wemmfi
163