[PATCH 9/9] makealias: handle missing funcs better

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When adding new functions, if the actual definition doesn't match the
header (say due to a typo), the regeneration of the internal headers
get confused and output bad cpp logic.  This causes gcc to barf due
to mismatched #ifdef/#endif.  Which is a pain to figure out due to
the sheer voulme of generated code.

So tweak the makealias script to detect this case and error out.
While we're here, improve the cpp output a bit to indent, include
comments, and merge similar ifdef blocks.

Signed-off-by: Mike Frysinger <vapier@xxxxxxxxxx>
---
 src/makealias |   18 ++++++++++++++----
 1 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/makealias b/src/makealias
index fd9c3fd..fca94d4 100755
--- a/src/makealias
+++ b/src/makealias
@@ -17,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 '^'$name'[ (]' "$SRCDIR"/*.c | sed -n 1p | 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
-- 
1.7.8.4

_______________________________________________
Fontconfig mailing list
Fontconfig@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/fontconfig


[Index of Archives]     [Fedora Fonts]     [Fedora Users]     [Fedora Cloud]     [Kernel]     [Fedora Packaging]     [Fedora Desktop]     [PAM]     [Gimp Graphics Editor]     [Yosemite News]

  Powered by Linux