summaryrefslogtreecommitdiff
path: root/tinyusb/common
diff options
context:
space:
mode:
authorhathach <[email protected]>2013-03-04 15:01:33 +0700
committerhathach <[email protected]>2013-03-04 15:01:33 +0700
commit656da2992ded914c70da849f9f7a1571dd2b91f4 (patch)
tree3e00db7c1c2cf57276fd61ae833e54ff1ea67364 /tinyusb/common
parent5207875addf972f8323b51318975c6c6f3861dd4 (diff)
add alignof to compilier specific
add static_assert support for IAR (built-in support)
Diffstat (limited to 'tinyusb/common')
-rw-r--r--tinyusb/common/assertion.h14
-rw-r--r--tinyusb/common/compiler/compiler_gcc.h2
-rw-r--r--tinyusb/common/compiler/compiler_iar.h2
3 files changed, 13 insertions, 5 deletions
diff --git a/tinyusb/common/assertion.h b/tinyusb/common/assertion.h
index dba812959..4082f4b59 100644
--- a/tinyusb/common/assertion.h
+++ b/tinyusb/common/assertion.h
@@ -61,13 +61,17 @@ extern "C"
//--------------------------------------------------------------------+
// Compile-time Assert
//--------------------------------------------------------------------+
-#if defined __COUNTER__ && __COUNTER__ != __COUNTER__
- #define _ASSERT_COUNTER __COUNTER__
+#ifdef __ICCARM__
+ #define STATIC_ASSERT static_assert
#else
- #define _ASSERT_COUNTER __LINE__
-#endif
+ #if defined __COUNTER__ && __COUNTER__ != __COUNTER__
+ #define _ASSERT_COUNTER __COUNTER__
+ #else
+ #define _ASSERT_COUNTER __LINE__
+ #endif
-#define STATIC_ASSSERT(const_expr) enum { XSTRING_CONCAT(static_assert_, _ASSERT_COUNTER) = 1/(!!(const_expr)) }
+ #define STATIC_ASSERT(const_expr, message) enum { XSTRING_CONCAT_(static_assert_, _ASSERT_COUNTER) = 1/(!!(const_expr)) }
+#endif
//#if ( defined CFG_PRINTF_UART || defined CFG_PRINTF_USBCDC || defined CFG_PRINTF_DEBUG )
#if TUSB_CFG_DEBUG == 3
diff --git a/tinyusb/common/compiler/compiler_gcc.h b/tinyusb/common/compiler/compiler_gcc.h
index b778f6b92..ac0238a8e 100644
--- a/tinyusb/common/compiler/compiler_gcc.h
+++ b/tinyusb/common/compiler/compiler_gcc.h
@@ -51,6 +51,8 @@
extern "C" {
#endif
+#define ALIGN_OF(x) __alignof__(x)
+
/// Normally, the compiler places the objects it generates in sections like data or bss & function in text. Sometimes, however, you need additional sections, or you need certain particular variables to appear in special sections, for example to map to special hardware. The section attribute specifies that a variable (or function) lives in a particular section
#define ATTR_SECTION(section) __attribute__ ((#section))
diff --git a/tinyusb/common/compiler/compiler_iar.h b/tinyusb/common/compiler/compiler_iar.h
index 85f98deed..99a9005d8 100644
--- a/tinyusb/common/compiler/compiler_iar.h
+++ b/tinyusb/common/compiler/compiler_iar.h
@@ -51,6 +51,8 @@
extern "C" {
#endif
+#define ALIGN_OF(x) __ALIGNOF__(x)
+
#define ATTR_PREPACKED __packed
#define ATTR_PACKED