home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / X / mit / util / scripts / mergelib.cpp < prev    next >
Encoding:
Text File  |  1991-08-22  |  2.6 KB  |  100 lines

  1. XCOMM!/bin/sh
  2. XCOMM
  3. XCOMM $XConsortium: mergelib.cpp,v 1.3 91/08/22 11:08:08 rws Exp $
  4. XCOMM 
  5. XCOMM Copyright 1989 Massachusetts Institute of Technology
  6. XCOMM 
  7. XCOMM Permission to use, copy, modify, distribute, and sell this software and its
  8. XCOMM documentation for any purpose is hereby granted without fee, provided that
  9. XCOMM the above copyright notice appear in all copies and that both that
  10. XCOMM copyright notice and this permission notice appear in supporting
  11. XCOMM documentation, and that the name of M.I.T. not be used in advertising or
  12. XCOMM publicity pertaining to distribution of the software without specific,
  13. XCOMM written prior permission.  M.I.T. makes no representations about the
  14. XCOMM suitability of this software for any purpose.  It is provided "as is"
  15. XCOMM without express or implied warranty.
  16. XCOMM 
  17. XCOMM M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
  18. XCOMM IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
  19. XCOMM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  20. XCOMM WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
  21. XCOMM OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
  22. XCOMM CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  23. XCOMM 
  24. XCOMM Author:  Jim Fulton, MIT X Consortium
  25. XCOMM 
  26. XCOMM mergelib - merge one library into another; this is commonly used by X
  27. XCOMM     to add the extension library into the base Xlib.
  28. XCOMM
  29.  
  30. usage="usage:  $0  to-library from-library [object-filename-prefix]"
  31. objprefix=_
  32.  
  33. case $# in
  34.     2) ;;
  35.     3) objprefix=$3 ;;
  36.     *) echo "$usage" 1>&2; exit 1 ;;
  37. esac
  38.  
  39. tolib=$1
  40. fromlib=$2
  41.  
  42. if [ ! -f $fromlib ]; then
  43.     echo "$0:  no such from-library $fromlib" 1>&2
  44.     exit 1
  45. fi
  46.  
  47. if [ ! -f $tolib ]; then
  48.     echo "$0:  no such to-library $tolib" 1>&2
  49.     exit 1
  50. fi
  51.  
  52.  
  53. XCOMM
  54. XCOMM Create a temp directory, and figure out how to reference the 
  55. XCOMM object files from it (i.e. relative vs. absolute path names).
  56. XCOMM
  57.  
  58. tmpdir=tmp.$$
  59. origdir=..
  60.  
  61. mkdir $tmpdir
  62.  
  63. if [ ! -d $tmpdir ]; then
  64.     echo "$0:  unable to create temporary directory $tmpdir" 1>&2
  65.     exit 1
  66. fi
  67.  
  68. case "$fromlib" in
  69.     /?*) upfrom= ;;
  70.     *)  upfrom=../ ;;
  71. esac
  72.  
  73. case "$tolib" in
  74.     /?*) upto= ;;
  75.     *)  upto=../ ;;
  76. esac
  77.  
  78.  
  79. XCOMM
  80. XCOMM In the temp directory, extract all of the object files and prefix
  81. XCOMM them with some symbol to avoid name clashes with the base library.
  82. XCOMM
  83. cd $tmpdir
  84. ar x ${upfrom}$fromlib
  85. for i in *.o; do
  86.     mv $i ${objprefix}$i
  87. done
  88.  
  89.  
  90. XCOMM
  91. XCOMM Merge in the object modules, ranlib (if appropriate) and cleanup
  92. XCOMM
  93. ARCMD ${upto}$tolib *.o
  94. RANLIB ${upto}$tolib
  95. cd $origdir
  96. rm -rf $tmpdir
  97.  
  98.  
  99.  
  100.