100 lines
2.6 KiB
C++
100 lines
2.6 KiB
C++
XCOMM!/bin/sh
|
|
XCOMM
|
|
XCOMM $XConsortium: mergelib.cpp,v 1.3 91/08/22 11:08:08 rws Exp $
|
|
XCOMM
|
|
XCOMM Copyright 1989 Massachusetts Institute of Technology
|
|
XCOMM
|
|
XCOMM Permission to use, copy, modify, distribute, and sell this software and its
|
|
XCOMM documentation for any purpose is hereby granted without fee, provided that
|
|
XCOMM the above copyright notice appear in all copies and that both that
|
|
XCOMM copyright notice and this permission notice appear in supporting
|
|
XCOMM documentation, and that the name of M.I.T. not be used in advertising or
|
|
XCOMM publicity pertaining to distribution of the software without specific,
|
|
XCOMM written prior permission. M.I.T. makes no representations about the
|
|
XCOMM suitability of this software for any purpose. It is provided "as is"
|
|
XCOMM without express or implied warranty.
|
|
XCOMM
|
|
XCOMM M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
|
|
XCOMM IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
|
|
XCOMM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
XCOMM WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
|
XCOMM OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
|
XCOMM CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
XCOMM
|
|
XCOMM Author: Jim Fulton, MIT X Consortium
|
|
XCOMM
|
|
XCOMM mergelib - merge one library into another; this is commonly used by X
|
|
XCOMM to add the extension library into the base Xlib.
|
|
XCOMM
|
|
|
|
usage="usage: $0 to-library from-library [object-filename-prefix]"
|
|
objprefix=_
|
|
|
|
case $# in
|
|
2) ;;
|
|
3) objprefix=$3 ;;
|
|
*) echo "$usage" 1>&2; exit 1 ;;
|
|
esac
|
|
|
|
tolib=$1
|
|
fromlib=$2
|
|
|
|
if [ ! -f $fromlib ]; then
|
|
echo "$0: no such from-library $fromlib" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f $tolib ]; then
|
|
echo "$0: no such to-library $tolib" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
|
|
XCOMM
|
|
XCOMM Create a temp directory, and figure out how to reference the
|
|
XCOMM object files from it (i.e. relative vs. absolute path names).
|
|
XCOMM
|
|
|
|
tmpdir=tmp.$$
|
|
origdir=..
|
|
|
|
mkdir $tmpdir
|
|
|
|
if [ ! -d $tmpdir ]; then
|
|
echo "$0: unable to create temporary directory $tmpdir" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
case "$fromlib" in
|
|
/?*) upfrom= ;;
|
|
*) upfrom=../ ;;
|
|
esac
|
|
|
|
case "$tolib" in
|
|
/?*) upto= ;;
|
|
*) upto=../ ;;
|
|
esac
|
|
|
|
|
|
XCOMM
|
|
XCOMM In the temp directory, extract all of the object files and prefix
|
|
XCOMM them with some symbol to avoid name clashes with the base library.
|
|
XCOMM
|
|
cd $tmpdir
|
|
ar x ${upfrom}$fromlib
|
|
for i in *.o; do
|
|
mv $i ${objprefix}$i
|
|
done
|
|
|
|
|
|
XCOMM
|
|
XCOMM Merge in the object modules, ranlib (if appropriate) and cleanup
|
|
XCOMM
|
|
ARCMD ${upto}$tolib *.o
|
|
RANLIB ${upto}$tolib
|
|
cd $origdir
|
|
rm -rf $tmpdir
|
|
|
|
|
|
|