view lisp/hyperbole/smart-clib-sym @ 183:e121b013d1f0 r20-3b18

Import from CVS: tag r20-3b18
author cvs
date Mon, 13 Aug 2007 09:54:23 +0200
parents 376386a54a3c
children
line wrap: on
line source

#!/bin/csh -f
#
# SUMMARY:      Test whether symbol appears within a set of C libraries.
# USAGE:        <script-name> <symbol-string>
#
# AUTHOR:       Bob Weiner
# ORG:          Brown U.
#
# ORIG-DATE:     5-Oct-91 at 03:29:05
# LAST-MOD:     25-Aug-95 at 02:23:17 by Bob Weiner
#
# This file is part of Hyperbole.
# Available for use and distribution under the same terms as GNU Emacs.
#
# Copyright (C) 1991-1995, Free Software Foundation, Inc.
# Developed with support from Motorola Inc.
#
# DESCRIPTION:  
#
#   Create the file given by the variable 'clib_list' below, and place in that
#   file the full path for each C, C++ or Objective-C library that you want
#   scanned for symbol names.  One filename per line.  Do not quote the
#   filenames.
#
#   Handles exact name matches only.  Echos and exits with same output value.
#   Either 1 if symbol is found or 0 if not.
#
# DESCRIP-END.

# Perl script used to tell whether one file is newer than another.
#
set fn = "file-newer"

# Create this file and place in the file the full path for each C, C++ or
# Objective-C library that you want scanned for symbol names.  One filename
# per line.  Do not quote the filenames.
#
set clib_list = "~/.CLIBS-LIST"


# This file will automatically be created to cache the symbol names.
# Remove it if you ever want to rebuild the symbol table.
#
set clib_symbols = "~/.clibs-symbols"

# Try to locate 'perl' and 'file-newer' script for use.

which perl >& /dev/null
if ($status) unset fn

set st = 0 rebuild = 0
if (-e $clib_list) then
   if (! -e $clib_symbols || -z $clib_symbols) set rebuild = 1
   if (! $rebuild  && $?fn) @ rebuild = `perl $fn $clib_list $clib_symbols`
   if ($rebuild) then
      nm -g `cat $clib_list` | grep '^[0-9 ].* _[A-Za-z]' | sed -e 's/^[^_][^_]*_//g' | sort | uniq > $clib_symbols
   endif
   fgrep -sx $1 $clib_symbols >& /dev/null
   @ st = ! $status
endif

echo $st
exit $st