blob: 4bc959452d3b80a4aecf7c415e94dbfe26fb281f [file] [log] [blame]
Junxiao Shi8d71fdb2014-12-07 21:55:19 -07001# -*- Mode: python; py-indent-offset: 4; indent-tabs-mode: nil; coding: utf-8; -*-
2
3from waflib.Configure import conf
4
5FRIEND_TYPENAME = '''
6class A;
7
8template<typename T>
9class B
10{
11 friend T;
12};
13
14B<A> g_b;
15'''
16
17FRIEND_WRAPPER = '''
18class A;
19
20template<typename T>
21struct TypeWrapper
22{
23 typedef T Type;
24};
25
26template<typename T>
27class B
28{
29 friend class TypeWrapper<T>::Type;
30};
31
32B<A> g_b;
33'''
34
35@conf
36def check_friend_typename(self):
37 if self.check_cxx(msg='Checking for friend typename-specifier',
38 fragment=FRIEND_TYPENAME,
39 features='cxx', mandatory=False):
40 self.define('HAVE_CXX_FRIEND_TYPENAME', 1)
41 elif self.check_cxx(msg='Checking for friend typename using wrapper',
42 fragment=FRIEND_WRAPPER,
43 features='cxx', mandatory=True):
44 self.define('HAVE_CXX_FRIEND_TYPENAME_WRAPPER', 1)
45
46def configure(conf):
47 conf.check_friend_typename()