compiler: don't override existing definitions.
authorRusty Russell <rusty@rustcorp.com.au>
Thu, 28 Apr 2011 03:52:07 +0000 (13:22 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Thu, 28 Apr 2011 04:26:24 +0000 (13:56 +0930)
It's common when integrating CCAN into existing projects that they define
such constants for themselves.  In an ideal world, the entire project
switches to one set of definitions, but for large projects (eg SAMBA)
that's not realistic and conflicts with the aim of making CCAN modules
easy to "drop in" to existing code.

(This is a generalization of Douglas Bagnell's patch sent in Message-ID:
<4DB8D00D.8000800@paradise.net.nz>).

ccan/compiler/compiler.h

index aa7323f5ff9cbc6805620e7aa4bce0383276508d..74e0f1835c1207454aa1fdb364d3573df31387d1 100644 (file)
@@ -2,6 +2,7 @@
 #define CCAN_COMPILER_H
 #include "config.h"
 
+#ifndef COLD
 #if HAVE_ATTRIBUTE_COLD
 /**
  * COLD - a function is unlikely to be called.
@@ -19,7 +20,9 @@
 #else
 #define COLD
 #endif
+#endif
 
+#ifndef NORETURN
 #if HAVE_ATTRIBUTE_NORETURN
 /**
  * NORETURN - a function does not return
@@ -37,7 +40,9 @@
 #else
 #define NORETURN
 #endif
+#endif
 
+#ifndef PRINTF_FMT
 #if HAVE_ATTRIBUTE_PRINTF
 /**
  * PRINTF_FMT - a function takes printf-style arguments
@@ -54,7 +59,9 @@
 #else
 #define PRINTF_FMT(nfmt, narg)
 #endif
+#endif
 
+#ifndef IDEMPOTENT
 #if HAVE_ATTRIBUTE_CONST
 /**
  * IDEMPOTENT - a function's return depends only on its argument
 #else
 #define IDEMPOTENT
 #endif
+#endif
 
 #if HAVE_ATTRIBUTE_UNUSED
+#ifndef UNNEEDED
 /**
  * UNNEEDED - a variable/function may not be needed
  *
@@ -86,7 +95,9 @@
  * }
  */
 #define UNNEEDED __attribute__((unused))
+#endif
 
+#ifndef NEEDED
 #if HAVE_ATTRIBUTE_USED
 /**
  * NEEDED - a variable/function is needed
 /* Before used, unused functions and vars were always emitted. */
 #define NEEDED __attribute__((unused))
 #endif
+#endif
 
+#ifndef UNUSED
 /**
  * UNUSED - a parameter is unused
  *
  *     }
  */
 #define UNUSED __attribute__((unused))
+#endif
 #else
+#ifndef UNNEEDED
 #define UNNEEDED
+#endif
+#ifndef NEEDED
 #define NEEDED
+#endif
+#ifndef UNUSED
 #define UNUSED
 #endif
+#endif
 
+#ifndef IS_COMPILE_CONSTANT
 #if HAVE_BUILTIN_CONSTANT_P
 /**
  * IS_COMPILE_CONSTANT - does the compiler know the value of this expression?
 /* If we don't know, assume it's not. */
 #define IS_COMPILE_CONSTANT(expr) 0
 #endif
+#endif
 
+#ifndef WARN_UNUSED_RESULT
 #if HAVE_WARN_UNUSED_RESULT
 /**
  * WARN_UNUSED_RESULT - warn if a function return value is unused.
 #else
 #define WARN_UNUSED_RESULT
 #endif
+#endif
 #endif /* CCAN_COMPILER_H */