aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJacob Erlbeck <jerlbeck@sysmocom.de>2013-08-14 12:26:27 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2013-08-14 15:31:38 +0200
commit6b2621883f4c0ce446bae52198c6169c02efda6b (patch)
treef505a6658e6cbb4d342702dacce03f6597be0824
parent30fbcf5a4134945cb24d50e7fa2151d05241a1f6 (diff)
core: Move OSMO_DEPRECATED to new core/defs.h file
Add a new core/defs.h file for definitions that can be used from within header files without including prototypes and extern declarations. It's primarily meant for macro definitions and basic typedefs. Move the definition of OSMO_DEPRECATED there and use compiler version info to avoid compiler errors.
-rw-r--r--include/Makefile.am1
-rw-r--r--include/osmocom/core/defs.h39
-rw-r--r--include/osmocom/gsm/gsm_utils.h14
3 files changed, 41 insertions, 13 deletions
diff --git a/include/Makefile.am b/include/Makefile.am
index 3875fecd..b1a818d2 100644
--- a/include/Makefile.am
+++ b/include/Makefile.am
@@ -11,6 +11,7 @@ nobase_include_HEADERS = \
osmocom/core/crc64gen.h \
osmocom/core/crc8gen.h \
osmocom/core/crcgen.h \
+ osmocom/core/defs.h \
osmocom/core/gsmtap.h \
osmocom/core/gsmtap_util.h \
osmocom/core/linuxlist.h \
diff --git a/include/osmocom/core/defs.h b/include/osmocom/core/defs.h
new file mode 100644
index 00000000..e3afbff2
--- /dev/null
+++ b/include/osmocom/core/defs.h
@@ -0,0 +1,39 @@
+#ifndef OSMOCORE_DEFS_H
+#define OSMOCORE_DEFS_H
+
+/*! \defgroup utils General-purpose utility functions
+ * @{
+ */
+
+/*! \file defs.h
+ * \brief General definitions that are meant to be included from header files.
+ */
+
+/*! \brief Check for gcc and version.
+ *
+ * \note Albeit glibc provides a features.h file that contains a similar
+ * definition (__GNUC_PREREQ), this definition has been copied from there
+ * to have it available with other libraries, too.
+ *
+ * \return != 0 iff gcc is used and it's version is at least maj.min.
+ */
+#if defined __GNUC__ && defined __GNUC_MINOR__
+# define OSMO_GNUC_PREREQ(maj, min) \
+ ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
+#else
+# define OSMO_GNUC_PREREQ(maj, min) 0
+#endif
+
+/*! \brief Set the deprecated attribute with a message.
+ */
+#if ! defined(__GNUC__)
+# define OSMO_DEPRECATED(text)
+#elif OSMO_GNUC_PREREQ(4,5)
+# define OSMO_DEPRECATED(text) __attribute__((__deprecated__(text)))
+#else
+# define OSMO_DEPRECATED(text) __attribute__((__deprecated__))
+#endif
+
+/*! @} */
+
+#endif
diff --git a/include/osmocom/gsm/gsm_utils.h b/include/osmocom/gsm/gsm_utils.h
index 1c55dfb0..f412e3e6 100644
--- a/include/osmocom/gsm/gsm_utils.h
+++ b/include/osmocom/gsm/gsm_utils.h
@@ -28,7 +28,7 @@
#include <stddef.h>
#include <stdint.h>
-#include <osmocom/gsm/gsm_utils.h>
+#include <osmocom/core/defs.h>
#define ADD_MODULO(sum, delta, modulo) do { \
if ((sum += delta) >= modulo) \
@@ -37,18 +37,6 @@
#define GSM_MAX_FN (26*51*2048)
-/*! \brief Set the deprecated attribute with a message.
- *
- * \todo Move this to a global header utility file.
- * \todo Check for compiler version to selectivly enable the message.
- */
-#if 0
-#define OSMO_DEPRECATED(text) __attribute__((deprecated(text)))
-#else
-#define OSMO_DEPRECATED(text) __attribute__((__deprecated__))
-#endif
-
-
struct gsm_time {
uint32_t fn; /* FN count */
uint16_t t1; /* FN div (26*51) */