1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
#!/bin/bash
# This script was used to generate the version script for CPP symbols
set -e
declare -A versions=()
declare -A c=()
declare -A cpp=()
while read ligne; do
symbol="$(echo "$ligne" | awk -F'@' '{print $1}')"
version="$(echo "$ligne" | awk -F'@' '{print $2}')"
if [ ! ${versions[$version]+_} ]; then
versions[$version]=""
fi
if [[ "$symbol" =~ ^[^\ :]*$ ]]; then
c[$version]="${c[$version]}${symbol}\n"
else
cpp[$version]="${cpp[$version]}${symbol}\n"
fi
done < <(grep -Ev '^(lib|\s*#)' debian/libhdf5-cpp-7.symbols | sed 's/([^)]*)//' | sed 's/^ "\?\([^@]*\)@Base"\? \(.*\)$/\1@\2/')
prev_version=""
for version in $(echo "${!versions[@]}" | sed 's/ /\n/g' | sort -V); do
echo "HDF5_CPP_$version {"
echo " global:"
echo ' extern "C++" {'
echo -e "${cpp[$version]}" | sed '/^$/d;s/^/ "/;s/$/"\;/'
echo ' };'
echo -e "${c[$version]}" | sed '/^$/d;s/^/ /;s/$/\;/'
echo "}${prev_version:+ HDF5_CPP_$prev_version};"
echo ""
prev_version=$version
done
|