summaryrefslogtreecommitdiff
path: root/src/utils.h
diff options
context:
space:
mode:
authorRan Benita <ran234@gmail.com>2012-07-20 17:09:49 +0300
committerRan Benita <ran234@gmail.com>2012-07-23 00:45:34 +0300
commit58f8d2c151d95bb920d346dcae3e6c429789f257 (patch)
treea139293984137a8156d776770da65d5ce0c9394c /src/utils.h
parent8b0e9f929c66a0ceaed599cd1730d0782c486353 (diff)
downloadlibxkbcommon-58f8d2c151d95bb920d346dcae3e6c429789f257.tar.gz
libxkbcommon-58f8d2c151d95bb920d346dcae3e6c429789f257.tar.bz2
libxkbcommon-58f8d2c151d95bb920d346dcae3e6c429789f257.zip
utils: remove Xfuncproto.h and use our own macros
Add XKB_EXPORT to replace _X_EXPORT, and copy the definitions of _X_ATTRIBUTE_FOO as ATTR_FOO. Signed-off-by: Ran Benita <ran234@gmail.com>
Diffstat (limited to 'src/utils.h')
-rw-r--r--src/utils.h37
1 files changed, 28 insertions, 9 deletions
diff --git a/src/utils.h b/src/utils.h
index 808086c..438660d 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -33,8 +33,6 @@
#include <stdio.h>
#include <stdlib.h>
-#include <X11/Xfuncproto.h>
-
/*
* We sometimes malloc strings and then expose them as const char*'s. This
* macro is used when we free these strings in order to avoid -Wcast-qual
@@ -46,40 +44,61 @@
#define uStringText(s) ((s) == NULL ? "<NullString>" : (s))
#define uStrCasePrefix(s1, s2) (strncasecmp((s1), (s2), strlen(s1)) == 0)
-/***====================================================================***/
+/* Compiler Attributes */
+
+#if defined(__GNUC__) && (__GNUC__ >= 4) && !defined(__CYGWIN__)
+# define XKB_EXPORT __attribute__((visibility("default")))
+#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550)
+# define XKB_EXPORT __global
+#else /* not gcc >= 4 and not Sun Studio >= 8 */
+# define XKB_EXPORT
+#endif
+
+#if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 203)
+# define ATTR_PRINTF(x,y) __attribute__((__format__(__printf__, x, y)))
+#else /* not gcc >= 2.3 */
+# define ATTR_PRINTF(x,y)
+#endif
+
+#if (defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) >= 205)) \
+ || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
+# define ATTR_NORETURN __attribute__((__noreturn__))
+#else
+# define ATTR_NORETURN
+#endif /* GNUC */
extern bool
uSetErrorFile(char *name);
#define INFO uInformation
-extern _X_ATTRIBUTE_PRINTF(1, 2) void
+ATTR_PRINTF(1, 2) void
uInformation(const char *s, ...);
#define ACTION uAction
-extern _X_ATTRIBUTE_PRINTF(1, 2) void
+ATTR_PRINTF(1, 2) void
uAction(const char *s, ...);
#define WARN uWarning
-extern _X_ATTRIBUTE_PRINTF(1, 2) void
+ATTR_PRINTF(1, 2) void
uWarning(const char *s, ...);
#define ERROR uError
-extern _X_ATTRIBUTE_PRINTF(1, 2) void
+ATTR_PRINTF(1, 2) void
uError(const char *s, ...);
#define FATAL uFatalError
-extern _X_ATTRIBUTE_PRINTF(1, 2) _X_NORETURN void
+ATTR_PRINTF(1, 2) ATTR_NORETURN void
uFatalError(const char *s, ...);
/* WSGO stands for "Weird Stuff Going On" (wtf???) */
#define WSGO uInternalError
-extern _X_ATTRIBUTE_PRINTF(1, 2) void
+ATTR_PRINTF(1, 2) void
uInternalError(const char *s, ...);
#endif /* UTILS_H */