Compile with -fvisibility=hidden when possible
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
diff --git a/configure.ac b/configure.ac
index 5a70315..26e37ab 100644
--- a/configure.ac
+++ b/configure.ac
@@ -58,6 +58,10 @@ AC_CHECK_FUNCS([strcasecmp])
XORG_CHECK_MALLOC_ZERO
XORG_CWARNFLAGS
+if test "x$GCC" = xyes ; then
+ CFLAGS="$CFLAGS -fvisibility=hidden"
+fi
+
PKG_CHECK_MODULES([X11], [xproto kbproto >= 1.0.99.1])
PKG_CHECK_MODULES([XLIB], [x11])
diff --git a/include/X11/extensions/XKBcommon.h b/include/X11/extensions/XKBcommon.h
index ab67e6e..59a0dd4 100644
--- a/include/X11/extensions/XKBcommon.h
+++ b/include/X11/extensions/XKBcommon.h
@@ -884,19 +884,19 @@ _XFUNCPROTOBEGIN
typedef uint32_t (*InternAtomFuncPtr)(const char *val);
typedef const char *(*GetAtomValueFuncPtr)(uint32_t atom);
-extern void
+_X_EXPORT extern void
XkbcInitAtoms(InternAtomFuncPtr intern, GetAtomValueFuncPtr get_atom_value);
-extern struct xkb_desc *
+_X_EXPORT extern struct xkb_desc *
XkbcCompileKeymapFromRules(const XkbRMLVOSet *rmlvo);
-extern struct xkb_desc *
+_X_EXPORT extern struct xkb_desc *
XkbcCompileKeymapFromComponents(const struct xkb_component_names * ktcsg);
-extern struct xkb_desc *
+_X_EXPORT extern struct xkb_desc *
XkbcCompileKeymapFromFile(FILE *inputFile, const char *mapName);
-extern struct xkb_component_list *
+_X_EXPORT extern struct xkb_component_list *
XkbcListComponents(struct xkb_component_names * ptrns, int *maxMatch);
/*
@@ -913,7 +913,7 @@ XkbcListComponents(struct xkb_component_names * ptrns, int *maxMatch);
* If a component in names needs to be modified, the existing value will be
* free()d, and a new one allocated with malloc().
*/
-extern void
+_X_EXPORT extern void
XkbcCanonicaliseComponents(struct xkb_component_names * names,
const struct xkb_component_names * old);
@@ -928,14 +928,14 @@ XkbcCanonicaliseComponents(struct xkb_component_names * names,
* This is uint32_t rather than KeySym, as KeySym changes size between
* client and server (no, really).
*/
-extern char *
+_X_EXPORT extern char *
XkbcKeysymToString(uint32_t ks);
/*
* See XkbcKeysymToString comments: this function will accept any string
* from that function.
*/
-extern uint32_t
+_X_EXPORT extern uint32_t
XkbcStringToKeysym(const char *s);
_XFUNCPROTOEND
diff --git a/test/filecomp.c b/test/filecomp.c
index 49c8394..d2b2d7b 100644
--- a/test/filecomp.c
+++ b/test/filecomp.c
@@ -57,8 +57,6 @@ int main(int argc, char *argv[])
exit(1);
}
- uSetErrorFile(NULL);
-
xkb = XkbcCompileKeymapFromFile(file, name);
fclose(file);
diff --git a/test/namescomp.c b/test/namescomp.c
index 72a8b35..430e0a7 100644
--- a/test/namescomp.c
+++ b/test/namescomp.c
@@ -51,8 +51,6 @@ int main(int argc, char *argv[])
ktcsg.symbols = argv[4];
ktcsg.geometry = argv[5];
- uSetErrorFile(NULL);
-
xkb = XkbcCompileKeymapFromComponents(&ktcsg);
if (!xkb) {
diff --git a/test/rulescomp.c b/test/rulescomp.c
index ccb59df..2056adf 100644
--- a/test/rulescomp.c
+++ b/test/rulescomp.c
@@ -50,8 +50,6 @@ int main(int argc, char *argv[])
rmlvo.variant = argv[4];
rmlvo.options = argv[5];
- uSetErrorFile(NULL);
-
xkb = XkbcCompileKeymapFromRules(&rmlvo);
if (!xkb) {