cdesktopenv/cde/util/scripts/mergelib.cpp

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