#! /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 # 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