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