]> git.wh0rd.org - fontconfig.git/blobdiff - src/makealias
makealias: handle missing funcs better
[fontconfig.git] / src / makealias
index 02167b25bdf1cfda21b0839c42fd661d3e3a8214..fca94d4a2d7cb051307fd86e0b14aa1922703427 100755 (executable)
@@ -1,8 +1,10 @@
 #!/bin/sh
 SRCDIR=$1
 shift
-HEAD=fcalias.h
-TAIL=fcaliastail.h
+HEAD=$1
+shift
+TAIL=$1
+shift
 rm -f $HEAD $TAIL
 echo "#if HAVE_GNUC_ATTRIBUTE" >> $TAIL
 cat "$@" | grep '^Fc[^ ]* *(' | sed -e 's/ *(.*$//' |
@@ -15,12 +17,22 @@ while read name; do
                hattr='__attribute((visibility("hidden")))'
                echo "extern __typeof ($name) $alias $hattr;" >> $HEAD
                echo "#define $name $alias" >> $HEAD
-               grep -l -w '^'$name "$SRCDIR"/*.c | sed -e 's/^.*\/\([^.]*\)\.c/#ifdef __\1__/' >> $TAIL
-               echo "#undef $name" >> $TAIL
+               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
-               echo "#endif" >> $TAIL
                ;;
        esac
 done
-echo "#endif" >> $TAIL
+[ $? -ne 0 ] && exit 1
+echo "#endif /* $ifdef */" >> $TAIL
+echo "#endif /* HAVE_GNUC_ATTRIBUTE */" >> $TAIL