Reverse the logic to provide defaults for undefined macros.
authorbernie <bernie@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 20 Jul 2004 23:12:43 +0000 (23:12 +0000)
committerbernie <bernie@38d2e660-2303-0410-9eaa-f027e97ec537>
Tue, 20 Jul 2004 23:12:43 +0000 (23:12 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@67 38d2e660-2303-0410-9eaa-f027e97ec537

compiler.h

index ebbfa4e128a345fa6d81096f77ad870a524a47c2..7b09e1fd25aacfe3dc91fa7262d5d07f7ac1be61 100755 (executable)
@@ -1,8 +1,8 @@
 /*!
  * \file
  * <!--
- * Copyright 2003,2004 Develer S.r.l. (http://www.develer.com/)
- * Copyright 2001,2002,2003 Bernardo Innocenti <bernie@codewiz.org>
+ * Copyright 2003, 2004 Develer S.r.l. (http://www.develer.com/)
+ * Copyright 2001, 2002, 2003 Bernardo Innocenti <bernie@codewiz.org>
  * This file is part of DevLib - See devlib/README for information.
  * -->
  *
@@ -15,6 +15,9 @@
 
 /*
  * $Log$
+ * Revision 1.6  2004/07/20 23:12:43  bernie
+ * Reverse the logic to provide defaults for undefined macros.
+ *
  * Revision 1.5  2004/07/20 17:08:03  bernie
  * Cleanup documentation
  *
        #define GNUC_PREREQ(maj, min) 0
 #endif
 
-/* A few defaults for missing compiler features. */
-#define INLINE                 static inline
-#define NORETURN               /* nothing */
-#define FORMAT(type,fmt,first) /* nothing */
-#define DEPRECATED             /* nothing */
-#define UNUSED(type,arg)       type arg
-#define REGISTER               /* nothing */
-#define INTERRUPT(x)           ERROR_NOT_IMPLEMENTED
-
-/* Support for harvard architectures */
-#define PGM_READ_CHAR(s) (*(s))
-#define PGM_FUNC(x) x
-#define PGM_ATTR        /* nothing */
-
 #if defined(__IAR_SYSTEMS_ICC) || defined(__IAR_SYSTEMS_ICC__)
        #pragma language=extended
-       #undef  INTERRUPT
        #define INTERRUPT(x)  interrupt [x]
-       #undef  REGISTER
        #define REGISTER      shortad
-       #undef  INLINE
        #define INLINE        /* unsupported */
 
        /* Imported from <longjmp.h>. Unfortunately, we can't just include
        #include <time.h> /* for time_t */
        #define float double
 
-       #ifdef __cplusplus
-               extern "C" {
-       #endif
-                       void SchedulerIdle(void);
-       #ifdef __cplusplus
-               }
-       #endif
-
        /* Ouch, ReleaseSemaphore() conflicts with a WIN32 call ;-( */
        #define ReleaseSemaphore KReleaseSemaphore
 
 #elif defined(__GNUC__)
 
        /* GCC attributes */
-       #undef  FORMAT
        #define FORMAT(type,fmt,first)  __attribute__((__format__(type, fmt, first)))
-       #undef  NORETURN
        #define NORETURN                __attribute__((__noreturn__))
-       #undef  UNUSED
        #define UNUSED(type,arg)        __attribute__((__unused__)) type arg
-       #undef  INLINE
        #define INLINE extern inline
        #if GNUC_PREREQ(3,1)
-               #undef DEPRECATED
                #define DEPRECATED              __attribute__((__deprecated__))
        #endif
 
                #include <stdbool.h>
                #undef system_sigset_t
 
-               #ifdef __cplusplus
-                       extern "C" {
-               #endif
-                               void SchedulerIdle(void);
-               #ifdef __cplusplus
-                       }
-               #endif
-
        #elif defined(__AVR__)
 
                #include <stddef.h>
 
                /* Support for harvard architectures */
                #ifdef _PROGMEM
-                       #undef PGM_READ_CHAR
-                       #undef PGM_FUNC
-                       #undef PGM_ATTR
                        #define PGM_READ_CHAR(s) pgm_read_byte(s)
                        #define PGM_FUNC(x) x ## _P
                        #define PGM_ATTR        PROGMEM
        #include <stdbool.h>
        #include <setjmp.h>
 
-       #define PSTR            /* nothing */
-
 #else
        #error unknown compiler
 #endif
 
+
+/* A few defaults for missing compiler features. */
+#ifndef INLINE
+#define INLINE                 static inline
+#endif
+#ifndef NORETURN
+#define NORETURN               /* nothing */
+#endif
+#ifndef FORMAT
+#define FORMAT(type,fmt,first) /* nothing */
+#endif
+#ifndef
+#define DEPRECATED             /* nothing */
+#endif
+#ifndef
+#define UNUSED(type,arg)       type arg
+#endif
+#ifndef REGISTER
+#define REGISTER               /* nothing */
+#endif
+#ifndef INTERRUPT
+#define INTERRUPT(x)           ERROR_NOT_IMPLEMENTED
+#endif
+
+/* Support for harvard architectures */
+#ifndef PSTR
+#define PSTR            /* nothing */
+#endif
+#ifndef PGM_READ_CHAR
+#define PGM_READ_CHAR(s) (*(s))
+#endif
+#ifndef PGM_FUNC
+#define PGM_FUNC(x) x
+#endif
+#ifndef PGM_ATTR
+#define PGM_ATTR        /* nothing */
+#endif
+
+
 /* Misc definitions */
 #ifndef NULL
-#define NULL   0
+#define NULL  0
 #endif
 #ifndef EOF
-#define        EOF             (-1)
+#define        EOF   (-1)
+#endif
+
+
+/* Support for hybrid C/C++ applications. */
+#ifdef __cplusplus
+       #define EXTERN_C_BEGIN  extern "C" {
+       #define EXTERN_C_END    }
+#else
+       #define EXTERN_C_BEGIN  /* nothing */
+       #define EXTERN_C_END    /* nothing */
 #endif