#! /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 warpper 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 3 ] then echo "Usage: $0 awk versionfile output_file header_files" exit 1 fi awk="$1" shift versionfile="$1" shift symsfile="$1" shift symsfile_tmp="$symsfile.$$.tmp~" libname=`basename $symsfile | cut -d '.' -f1` verline=`grep $libname $versionfile` majver=`echo -n "$verline" | cut -d ':' -f2` minver=`echo -n "$verline" | cut -d ':' -f3` upname=`echo -n "$libname" | sed -e 's/^lib//' | tr '[a-z]' '[A-Z]'` symver="${upname}_${majver}.${minver}" symsext=`basename $symsfile | cut -d '.' -f2-` if test x"$symsext" = x"version.syms"; then echo "creating $symsfile for $symver" else echo "creating $symsfile" symver="# no symbol versioning" fi proto_src="`echo $@ | tr ' ' '\n' | sort | uniq `" mkdir -p `dirname $symsfile` cat > $symsfile_tmp <<_ACEOF # # This file is automatically generated with "$0". DO NOT EDIT # $symver _ACEOF ${awk} -f `dirname $0`/mksyms.awk $proto_src >> $symsfile_tmp if cmp -s $symsfile $symsfile_tmp 2>/dev/null then echo "$symsfile unchanged" rm $symsfile_tmp else mv $symsfile_tmp $symsfile fi