| #! /bin/sh |
| |
| # |
| # mksyms.sh |
| # |
| # Extract symbols to export from C-header files. |
| # output in version-script format for linking shared libraries. |
| # |
| # This is the shell wrapper for the mksyms.awk core script. |
| # |
| # Copyright (C) 2008 Micheal Adam <obnox@samba.org> |
| # |
| |
| LANG=C; export LANG |
| LC_ALL=C; export LC_ALL |
| LC_COLLATE=C; export LC_COLLATE |
| |
| if [ $# -lt 2 ] |
| then |
| echo "Usage: $0 awk output_file header_files" |
| exit 1 |
| fi |
| |
| awk="$1" |
| shift |
| |
| symsfile="$1" |
| shift |
| symsfile_tmp="$symsfile.$$.tmp~" |
| |
| proto_src="`echo $@ | tr ' ' '\n' | sort | uniq `" |
| |
| echo creating $symsfile |
| |
| mkdir -p `dirname $symsfile` |
| |
| #Write header |
| cat > $symsfile_tmp << EOF |
| # This file is autogenerated, please DO NOT EDIT |
| { |
| global: |
| EOF |
| |
| #loop on each header |
| for i in $proto_src; do |
| ${awk} -f `dirname $0`/mksyms.awk $i | sort >> $symsfile_tmp |
| done; |
| |
| #Write tail |
| cat >> $symsfile_tmp << EOF |
| |
| local: *; |
| }; |
| EOF |
| |
| if cmp -s $symsfile $symsfile_tmp 2>/dev/null |
| then |
| echo "$symsfile unchanged" |
| rm $symsfile_tmp |
| else |
| mv $symsfile_tmp $symsfile |
| fi |