#!/bin/sh
#
# $TOG: mergelib.cpp /main/5 1998/02/06 11:24:31 kaleb $
# 
# @OPENGROUP_COPYRIGHT@
# COPYRIGHT NOTICE
# Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
# Copyright (c) 1996, 1997, 1998, 1999, 2000 The Open Group
# ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
# the full copyright text.
#  
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
# 
# This software is subject to an open license. It may only be
# used on, with or for operating systems which are themselves open
# source systems. You must contact The Open Group for a license
# allowing distribution and sublicensing of this software on, with,
# or for operating systems which are not Open Source programs.
# 
# See http://www.opengroup.org/openmotif/license for full
# details of the license agreement. Any use, reproduction, or
# distribution of the program constitutes recipient's acceptance of
# this agreement.
# 
# EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
# PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
# WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
# OR FITNESS FOR A PARTICULAR PURPOSE
# 
# EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
# NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT,
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED
# AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE
# EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGES.
# 
# Author:  Jim Fulton, MIT X Consortium
# 
# mergelib - merge one library into another; this is commonly used by X
#     to add the extension library into the base Xlib.
#

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


#
# Create a temp directory, and figure out how to reference the 
# object files from it (i.e. relative vs. absolute path names).
#

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


#
# In the temp directory, extract all of the object files and prefix
# them with some symbol to avoid name clashes with the base library.
#
cd $tmpdir
ar x ${upfrom}$fromlib
for i in *.o; do
    mv $i ${objprefix}$i
done


#
# Merge in the object modules, ranlib (if appropriate) and cleanup
#
ar clq ${upto}$tolib *.o
ranlib ${upto}$tolib
cd $origdir
rm -rf $tmpdir



