8 ca_os = env.get('TARGET_OS')
9 ca_transport = env.get('TARGET_TRANSPORT')
10 secured = env.get('SECURED')
11 with_ra = env.get ('WITH_RA')
12 with_ra_ibb = env.get('WITH_RA_IBB')
13 with_tcp = env.get('WITH_TCP')
14 src_dir = env.get('SRC_DIR')
18 #####################################################################
19 # Source files and Target(s)
20 ######################################################################
22 print"Reading ca script %s"%ca_transport
24 env.PrependUnique(CPPPATH = [ os.path.join(root_dir, 'api') ])
26 with_upstream_libcoap = env.get('WITH_UPSTREAM_LIBCOAP')
27 if with_upstream_libcoap == '1':
28 # For bring up purposes only, we manually copy the forked version to where the unforked version is downloaded.
29 env.AppendUnique(CPPPATH = [os.path.join('#extlibs', 'libcoap', 'libcoap', 'include')])
30 env.AppendUnique(CPPDEFINES = ['WITH_UPSTREAM_LIBCOAP'])
32 # For bring up purposes only, the forked version will live here.
33 env.AppendUnique(CPPPATH = [ os.path.join(root_dir, 'lib', 'libcoap-4.1.1', 'include')])
35 env.AppendUnique(CPPPATH = [ os.path.join(root_dir, 'inc'),
36 os.path.join(src_dir, 'resource', 'csdk', 'logger', 'include'),
37 os.path.join(root_dir, 'common', 'inc'),
38 os.path.join(root_dir, 'util', 'inc') ])
40 if ca_os not in ['arduino', 'windows']:
41 env.AppendUnique(CPPDEFINES = ['WITH_POSIX'])
43 if ca_os not in ['darwin', 'ios', 'windows']:
44 env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
46 if ca_os in ['darwin','ios']:
47 env.AppendUnique(CPPDEFINES = ['_DARWIN_C_SOURCE'])
49 # Getting common source files
50 env.SConscript(os.path.join(root_dir, 'common', 'SConscript'))
52 # Getting util source files
53 env.SConscript(os.path.join(root_dir, 'util', 'SConscript'))
55 # The tinydtls library is found in '#extlibs/tinydtls', where the '#'
56 # is interpreted by SCons as the top-level iotivity directory where
57 # the SConscruct file is found.
58 build_dir = env.get('BUILD_DIR')
60 env.AppendUnique(CA_SRC = [os.path.join(ca_path,
61 'adapter_util/caadapterutils.c')])
63 if (('BLE' in ca_transport) or ('ALL' in ca_transport)):
64 env.AppendUnique(CA_SRC = [os.path.join(ca_path,
65 'adapter_util/cafragmentation.c')])
67 if env.get('SECURED') == '1':
68 env.SConscript(build_dir + 'extlibs/tinydtls/SConscript')
69 env.AppendUnique(CPPPATH = ['#extlibs/tinydtls'])
70 env.AppendUnique(CPPPATH = [src_dir + '/resource/csdk/security/include'])
71 env.AppendUnique(CPPDEFINES = ['__WITH_DTLS__'])
72 env.AppendUnique(CPPPATH = [os.path.join(root_dir, 'external/inc')])
73 tls_path = 'extlibs/mbedtls';
74 tls_headers_path = 'mbedtls/include';
75 if ca_os == 'tizen' and os.path.exists(root_dir + '/' + tls_path):
76 env.SConscript(os.path.join(root_dir, tls_path + '/SConscript'))
77 env.AppendUnique(CPPPATH = [os.path.join(root_dir, tls_path + '/' + tls_headers_path)])
79 if ca_os != 'android':
80 env.SConscript('#' + tls_path + '/SConscript')
81 env.AppendUnique(CPPPATH = ['#' + tls_path + '/' + tls_headers_path])
82 env.AppendUnique(CA_SRC = [os.path.join(ca_path, 'adapter_util/ca_adapter_net_ssl.c')])
84 if ((secured == '1') and (with_tcp == True)):
85 env.AppendUnique(CPPDEFINES = ['__WITH_TLS__'])
91 env.SConscript('#extlibs/wksxmppxep/SConscript')
93 if env.get('ROUTING') == 'GW':
94 env.AppendUnique(CPPDEFINES = ['ROUTING_GATEWAY'])
95 elif env.get('ROUTING') == 'EP':
96 env.AppendUnique(CPPDEFINES = ['ROUTING_EP'])
98 if ca_os == 'arduino':
99 env.AppendUnique(CPPDEFINES = ['SINGLE_THREAD'])
100 env.AppendUnique(CPPDEFINES = ['WITH_ARDUINO'])
101 print "setting WITH_ARDUINO"
103 'caconnectivitymanager.c',
104 'cainterfacecontroller.c',
105 'camessagehandler.c',
106 'canetworkconfigurator.c',
107 'caprotocolmessage.c',
108 'caretransmission.c',
112 'caconnectivitymanager.c',
113 'cainterfacecontroller.c',
114 'camessagehandler.c',
115 'canetworkconfigurator.c',
116 'caprotocolmessage.c',
117 'caqueueingthread.c',
118 'caretransmission.c',
120 if (('IP' in ca_transport) or ('ALL' in ca_transport)):
121 env.AppendUnique(CA_SRC = [os.path.join(ca_path, 'cablockwisetransfer.c') ])
122 env.AppendUnique(CPPDEFINES = ['WITH_BWT'])
125 os.path.join(ca_path, d) for d in ca_common_src ]
127 env.AppendUnique(CA_SRC = ca_common_src)
129 if 'ALL' in ca_transport:
133 transports.append('ra_adapter')
135 if ca_os in ['linux']:
136 transports.append('ip_adapter')
137 transports.append('bt_le_adapter')
138 elif ca_os in ['tizen']:
139 transports.append('ip_adapter')
140 transports.append('bt_edr_adapter')
141 transports.append('bt_le_adapter')
142 elif ca_os in ['android']:
143 transports.append('ip_adapter')
144 transports.append('bt_edr_adapter')
145 transports.append('bt_le_adapter')
146 transports.append('nfc_adapter')
147 elif ca_os in['darwin','ios', 'msys_nt', 'windows']:
148 transports.append('ip_adapter')
150 transports.append('ip_adapter')
151 transports.append('bt_edr_adapter')
152 transports.append('bt_le_adapter')
154 env.SConscript(dirs = [
155 os.path.join(ca_path, d) for d in transports ])
157 if 'IP' in ca_transport:
158 env.SConscript(os.path.join(ca_path, 'ip_adapter/SConscript'))
159 if ca_os == 'arduino':
161 transports = [ 'ip_adapter', 'tcp_adapter']
162 env.SConscript(dirs = [
163 os.path.join(ca_path, d) for d in transports ])
165 if 'BT' in ca_transport:
166 env.SConscript(os.path.join(ca_path, 'bt_edr_adapter/SConscript'))
168 if 'BLE' in ca_transport:
169 env.SConscript(os.path.join(ca_path, 'bt_le_adapter/SConscript'))
171 if 'NFC' in ca_transport:
172 env.SConscript(os.path.join(ca_path, 'nfc_adapter/SConscript'))
174 if ca_os in ['linux', 'tizen', 'android']:
176 env.SConscript(os.path.join(ca_path, 'tcp_adapter/SConscript'))
177 env.AppendUnique(CPPDEFINES = ['WITH_TCP'])
179 if ca_os in ['linux', 'tizen', 'android', 'arduino', 'ios']:
180 if (('BLE' in ca_transport) or ('BT' in ca_transport) or ('ALL' in ca_transport)):
181 env.AppendUnique(CPPDEFINES = ['WITH_TCP'])
183 print "Include path is %s" % env.get('CPPPATH')
184 print "Files path is %s" % env.get('CA_SRC')
186 lib_env = env.Clone()
187 lib_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
189 if env.get('LOGGING'):
190 lib_env.AppendUnique(CPPDEFINES=['TB_LOG'])
192 if ca_os == 'android':
193 lib_env.AppendUnique(LINKFLAGS = ['-Wl,-soname,libconnectivity_abstraction.so'])
195 if ca_os in ['android', 'tizen', 'linux', 'yocto']:
196 lib_env.AppendUnique(LIBS = ['coap'])
197 if lib_env.get('SECURED') == '1':
198 lib_env.AppendUnique(LIBS = ['mbedtls','mbedx509','mbedcrypto'])
199 if ca_os != 'android':
200 lib_env.AppendUnique(LIBS = ['rt'])
201 if ((lib_env.get('SECURED') == '1') and ((lib_env.get('WITH_TCP')) or (lib_env.get('WITH_CLOUD')))):
202 lib_env.AppendUnique(LIBS = ['mbedtls','mbedx509','mbedcrypto'])
203 static_calib = lib_env.StaticLibrary('connectivity_abstraction', env.get('CA_SRC'))
204 shared_calib = lib_env.SharedLibrary('connectivity_abstraction', lib_env.get('CA_SRC'))
205 calib = Flatten([static_calib, shared_calib])
206 elif ca_os in ['msys_nt', 'windows']:
207 lib_env.AppendUnique(LIBS = ['coap', 'mswsock', 'ws2_32', 'iphlpapi', 'logger'])
208 if lib_env.get('SECURED') == '1':
209 lib_env.AppendUnique(LIBS = ['mbedtls','mbedx509','mbedcrypto'])
210 calib = lib_env.StaticLibrary('connectivity_abstraction', env.get('CA_SRC'))
212 calib = lib_env.StaticLibrary('connectivity_abstraction', lib_env.get('CA_SRC'))
214 lib_env.InstallTarget(calib, 'connectivity_abstraction')
215 lib_env.UserInstallTargetLib(calib, 'connectivity_abstraction')