Commit b8a225b3 authored by Tom Anderson's avatar Tom Anderson Committed by Behdad Esfahbod

Allow overriding symbol visibility.

Fontconfig symbols were hardcoded to be either hidden or exported.  This patch
adds configurable symbol visibility.  This is useful for projects that want to
do in-tree fontconfig builds and not export any symbols, otherwise they would
conflict with the system library's symbols

Chromium is a project that does in-tree fontconfig builds, and the workaround
currently used is "#define visibility(x) // nothing" [1] and building with
"-fvisibility=hidden".
[1] https://cs.chromium.org/chromium/src/third_party/fontconfig/BUILD.gn?rcl=ce146f1f300988c960e1eecf8a61b238d6fd7f7f&l=62
parent 37fb4a98
......@@ -123,5 +123,12 @@ _FcObjectSetVapBuild_bail0: \
; \
}
#endif /* _FCPRIVATE_H_ */
#ifndef FC_ATTRIBUTE_VISIBILITY_HIDDEN
#define FC_ATTRIBUTE_VISIBILITY_HIDDEN __attribute((visibility("hidden")))
#endif
#ifndef FC_ATTRIBUTE_VISIBILITY_EXPORT
#define FC_ATTRIBUTE_VISIBILITY_EXPORT __attribute((visibility("default")))
#endif
#endif /* _FCPRIVATE_H_ */
......@@ -14,7 +14,7 @@ while read name; do
;;
*)
alias="IA__$name"
hattr='__attribute((visibility("hidden")))'
hattr='FC_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__/'`
......@@ -28,7 +28,7 @@ while read name; do
last=$ifdef
fi
echo "# undef $name" >> $TAIL
cattr='__attribute((alias("'$alias'"), visibility("default")))'
cattr='__attribute((alias("'$alias'"))) FC_ATTRIBUTE_VISIBILITY_EXPORT'
echo "extern __typeof ($name) $name $cattr;" >> $TAIL
;;
esac
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment