diff options
author | Tom Anderson <thomasanderson@chromium.org> | 2018-01-03 11:42:45 -0800 |
---|---|---|
committer | Behdad Esfahbod <behdad@behdad.org> | 2018-01-04 15:24:16 +0000 |
commit | b8a225b3c3495942480377b7b3404710c70be914 (patch) | |
tree | 85b1ad07de84efe800151780febb4a2ea27c8114 | |
parent | 37fb4a989e6243bceebadb8120f458d8d5b82c45 (diff) |
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
-rw-r--r-- | fontconfig/fcprivate.h | 9 | ||||
-rwxr-xr-x | src/makealias | 4 |
2 files changed, 10 insertions, 3 deletions
diff --git a/fontconfig/fcprivate.h b/fontconfig/fcprivate.h index a6ee5c23..23021b2f 100644 --- a/fontconfig/fcprivate.h +++ b/fontconfig/fcprivate.h @@ -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_ */ diff --git a/src/makealias b/src/makealias index e2f31c62..21de72ef 100755 --- a/src/makealias +++ b/src/makealias @@ -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 |