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