diff --git a/.waf-tools/compiler-features.py b/.waf-tools/compiler-features.py
new file mode 100644
index 0000000..4bc9594
--- /dev/null
+++ b/.waf-tools/compiler-features.py
@@ -0,0 +1,47 @@
+# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
+
+from waflib.Configure import conf
+
+FRIEND_TYPENAME = '''
+class A;
+
+template<typename T>
+class B
+{
+  friend T;
+};
+
+B<A> g_b;
+'''
+
+FRIEND_WRAPPER = '''
+class A;
+
+template<typename T>
+struct TypeWrapper
+{
+  typedef T Type;
+};
+
+template<typename T>
+class B
+{
+  friend class TypeWrapper<T>::Type;
+};
+
+B<A> g_b;
+'''
+
+@conf
+def check_friend_typename(self):
+    if self.check_cxx(msg='Checking for friend typename-specifier',
+                      fragment=FRIEND_TYPENAME,
+                      features='cxx', mandatory=False):
+        self.define('HAVE_CXX_FRIEND_TYPENAME', 1)
+    elif self.check_cxx(msg='Checking for friend typename using wrapper',
+                      fragment=FRIEND_WRAPPER,
+                      features='cxx', mandatory=True):
+        self.define('HAVE_CXX_FRIEND_TYPENAME_WRAPPER', 1)
+
+def configure(conf):
+    conf.check_friend_typename()
