diff options
Diffstat (limited to 'src/makealias')
-rwxr-xr-x | src/makealias | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/makealias b/src/makealias new file mode 100755 index 0000000..fca94d4 --- /dev/null +++ b/src/makealias @@ -0,0 +1,38 @@ +#!/bin/sh +SRCDIR=$1 +shift +HEAD=$1 +shift +TAIL=$1 +shift +rm -f $HEAD $TAIL +echo "#if HAVE_GNUC_ATTRIBUTE" >> $TAIL +cat "$@" | grep '^Fc[^ ]* *(' | sed -e 's/ *(.*$//' | +while read name; do + case $name in + FcCacheDir|FcCacheSubdir) + ;; + *) + alias="IA__$name" + hattr='__attribute((visibility("hidden")))' + echo "extern __typeof ($name) $alias $hattr;" >> $HEAD + echo "#define $name $alias" >> $HEAD + ifdef=$(grep -l '^'$name'[ (]' "$SRCDIR"/*.c | sed -n 1p | sed -e 's/^.*\/\([^.]*\)\.c/__\1__/') + if [ -z "$ifdef" ] ; then + echo "error: could not locate $name in src/*.c" 1>&2 + exit 1 + fi + if [ "$ifdef" != "$last" ] ; then + [ -n "$last" ] && echo "#endif /* $last */" >> $TAIL + echo "#ifdef $ifdef" >> $TAIL + last=$ifdef + fi + echo "# undef $name" >> $TAIL + cattr='__attribute((alias("'$alias'"), visibility("default")))' + echo "extern __typeof ($name) $name $cattr;" >> $TAIL + ;; + esac +done +[ $? -ne 0 ] && exit 1 +echo "#endif /* $ifdef */" >> $TAIL +echo "#endif /* HAVE_GNUC_ATTRIBUTE */" >> $TAIL |