Add some build assert macros

Stolen from the linux kernel.

Signed-off-by: Jens Axboe <axboe@fb.com>
diff --git a/compiler/compiler.h b/compiler/compiler.h
index e1afcb4..40e857c 100644
--- a/compiler/compiler.h
+++ b/compiler/compiler.h
@@ -33,4 +33,26 @@
 	1; \
 })
 
+#ifndef __compiletime_error
+#define __compiletime_error(message)
+#endif
+#ifndef __compiletime_error_fallback
+#define __compiletime_error_fallback(condition)	do { } while (0)
+#endif
+
+#define __compiletime_assert(condition, msg, prefix, suffix)		\
+	do {								\
+		int __cond = !(condition);				\
+		extern void prefix ## suffix(void) __compiletime_error(msg); \
+		if (__cond)						\
+			prefix ## suffix();				\
+		__compiletime_error_fallback(__cond);			\
+	} while (0)
+
+#define _compiletime_assert(condition, msg, prefix, suffix) \
+	__compiletime_assert(condition, msg, prefix, suffix)
+
+#define compiletime_assert(condition, msg) \
+	_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
+
 #endif