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')
59 if env.get('SECURED') == '1':
60 env.SConscript(build_dir + 'extlibs/tinydtls/SConscript')
61 env.SConscript(build_dir + 'extlibs/timer/SConscript')
62 env.AppendUnique(CPPPATH = ['#extlibs/timer'])
63 env.AppendUnique(CPPPATH = [src_dir + '/resource/csdk/connectivity/inc/pkix'])
65 env.AppendUnique(CA_SRC = [os.path.join(ca_path,
66 'adapter_util/caadapterutils.c')])
68 if (('BLE' in ca_transport) or ('ALL' in ca_transport)):
69 env.AppendUnique(CA_SRC = [os.path.join(ca_path,
70 'adapter_util/cafragmentation.c')])
72 if env.get('SECURED') == '1':
73 env.AppendUnique(CA_SRC = [os.path.join(ca_path,
74 'adapter_util/caadapternetdtls.c')])
75 env.AppendUnique(CPPPATH = [os.path.join(root_dir,
77 if env.get('DTLS_WITH_X509') == '1':
78 env.AppendUnique(CPPPATH = [src_dir + '/resource/csdk/connectivity/inc/pkix'])
79 env.AppendUnique(CPPPATH = [src_dir + '/extlibs/tinydtls/ecc/'])
80 env.AppendUnique(CPPPATH = [src_dir + '/extlibs/tinydtls/sha2/'])
81 env.AppendUnique(CPPDEFINES = ['__WITH_X509__'])
82 if not env.get('RELEASE'):
83 env.AppendUnique(CPPDEFINES = ['X509_DEBUG'])
84 pkix_src = Glob('adapter_util/pkix/*.c');
85 env.AppendUnique(CA_SRC = pkix_src)
87 if ((secured == '1') and (with_tcp == True)):
88 env.AppendUnique(CPPPATH = [os.path.join(src_dir, 'resource', 'csdk', 'security', 'include')])
89 env.AppendUnique(CPPDEFINES = ['__WITH_TLS__'])
90 tls_path = 'extlibs/mbedtls';
91 tls_headers_path = 'mbedtls/include';
92 if ca_os == 'tizen' and os.path.exists(root_dir + '/' + tls_path):
93 env.SConscript(os.path.join(root_dir, tls_path + '/SConscript'))
94 env.AppendUnique(CPPPATH = [os.path.join(root_dir, tls_path + '/' + tls_headers_path)])
96 if ca_os != 'android':
97 env.SConscript('#' + tls_path + '/SConscript')
98 env.AppendUnique(CPPPATH = ['#' + tls_path + '/' + tls_headers_path])
99 env.AppendUnique(CA_SRC = [os.path.join(ca_path, 'adapter_util/ca_adapter_net_tls.c')])
104 env.SConscript('#extlibs/wksxmppxep/SConscript')
106 if env.get('ROUTING') == 'GW':
107 env.AppendUnique(CPPDEFINES = ['ROUTING_GATEWAY'])
108 elif env.get('ROUTING') == 'EP':
109 env.AppendUnique(CPPDEFINES = ['ROUTING_EP'])
111 if env.get('WITH_PROXY'):
112 env.AppendUnique(CPPDEFINES = ['WITH_CHPROXY'])
114 if ca_os == 'arduino':
115 env.AppendUnique(CPPDEFINES = ['SINGLE_THREAD'])
116 env.AppendUnique(CPPDEFINES = ['WITH_ARDUINO'])
117 print "setting WITH_ARDUINO"
119 'caconnectivitymanager.c',
120 'cainterfacecontroller.c',
121 'camessagehandler.c',
122 'canetworkconfigurator.c',
123 'caprotocolmessage.c',
124 'caretransmission.c',
128 'caconnectivitymanager.c',
129 'cainterfacecontroller.c',
130 'camessagehandler.c',
131 'canetworkconfigurator.c',
132 'caprotocolmessage.c',
133 'caqueueingthread.c',
134 'caretransmission.c',
136 if (('IP' in ca_transport) or ('ALL' in ca_transport)):
137 env.AppendUnique(CA_SRC = [os.path.join(ca_path, 'cablockwisetransfer.c') ])
138 env.AppendUnique(CPPDEFINES = ['WITH_BWT'])
140 env.AppendUnique(CPPDEFINES = ['__WITH_DTLS__'])
141 if ca_os == 'tizen' and os.path.exists(root_dir + '/extlibs/tinydtls'):
142 env.AppendUnique(CPPPATH = [os.path.join(root_dir, 'extlibs/tinydtls')])
144 env.AppendUnique(CPPPATH = ['#extlibs/tinydtls'])
147 os.path.join(ca_path, d) for d in ca_common_src ]
149 env.AppendUnique(CA_SRC = ca_common_src)
151 if 'ALL' in ca_transport:
155 transports.append('ra_adapter')
157 if ca_os in ['linux']:
158 transports.append('ip_adapter')
159 transports.append('bt_le_adapter')
160 elif ca_os in ['tizen']:
161 transports.append('ip_adapter')
162 transports.append('bt_edr_adapter')
163 transports.append('bt_le_adapter')
164 elif ca_os in ['android']:
165 transports.append('ip_adapter')
166 transports.append('bt_edr_adapter')
167 transports.append('bt_le_adapter')
168 transports.append('nfc_adapter')
169 elif ca_os in['darwin','ios', 'msys_nt', 'windows']:
170 transports.append('ip_adapter')
172 transports.append('ip_adapter')
173 transports.append('bt_edr_adapter')
174 transports.append('bt_le_adapter')
176 env.SConscript(dirs = [
177 os.path.join(ca_path, d) for d in transports ])
179 if 'IP' in ca_transport:
180 env.SConscript(os.path.join(ca_path, 'ip_adapter/SConscript'))
181 if ca_os == 'arduino':
183 transports = [ 'ip_adapter', 'tcp_adapter']
184 env.SConscript(dirs = [
185 os.path.join(ca_path, d) for d in transports ])
187 if 'BT' in ca_transport:
188 env.SConscript(os.path.join(ca_path, 'bt_edr_adapter/SConscript'))
190 if 'BLE' in ca_transport:
191 env.SConscript(os.path.join(ca_path, 'bt_le_adapter/SConscript'))
193 if 'NFC' in ca_transport:
194 env.SConscript(os.path.join(ca_path, 'nfc_adapter/SConscript'))
196 if ca_os in ['linux', 'tizen', 'android']:
198 env.SConscript(os.path.join(ca_path, 'tcp_adapter/SConscript'))
199 env.AppendUnique(CPPDEFINES = ['WITH_TCP'])
201 if ca_os in ['linux', 'tizen', 'android', 'arduino', 'ios']:
202 if (('BLE' in ca_transport) or ('BT' in ca_transport) or ('ALL' in ca_transport)):
203 env.AppendUnique(CPPDEFINES = ['WITH_TCP'])
205 print "Include path is %s" % env.get('CPPPATH')
206 print "Files path is %s" % env.get('CA_SRC')
208 lib_env = env.Clone()
209 lib_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
211 if env.get('LOGGING'):
212 lib_env.AppendUnique(CPPDEFINES=['TB_LOG'])
214 if ca_os == 'android':
215 lib_env.AppendUnique(LINKFLAGS = ['-Wl,-soname,libconnectivity_abstraction.so'])
217 if ca_os in ['android', 'tizen', 'linux']:
218 lib_env.AppendUnique(LIBS = ['coap'])
219 if lib_env.get('SECURED') == '1':
220 lib_env.AppendUnique(LIBS = ['tinydtls'])
221 lib_env.AppendUnique(LIBS = ['timer'])
222 if ca_os != 'android':
223 lib_env.AppendUnique(LIBS = ['rt'])
224 if ((lib_env.get('SECURED') == '1') and ((lib_env.get('WITH_TCP')) or (lib_env.get('WITH_CLOUD')))):
225 lib_env.AppendUnique(LIBS = ['mbedtls','mbedx509','mbedcrypto'])
226 static_calib = lib_env.StaticLibrary('connectivity_abstraction', env.get('CA_SRC'))
227 shared_calib = lib_env.SharedLibrary('connectivity_abstraction', lib_env.get('CA_SRC'))
228 calib = Flatten([static_calib, shared_calib])
229 elif ca_os in ['msys_nt', 'windows']:
230 lib_env.AppendUnique(LIBS = ['coap', 'mswsock', 'ws2_32', 'iphlpapi', 'logger'])
231 if lib_env.get('SECURED') == '1':
232 lib_env.AppendUnique(LIBS = ['tinydtls'])
233 lib_env.AppendUnique(LIBS = ['timer'])
234 calib = lib_env.StaticLibrary('connectivity_abstraction', env.get('CA_SRC'))
236 calib = lib_env.StaticLibrary('connectivity_abstraction', lib_env.get('CA_SRC'))
238 lib_env.InstallTarget(calib, 'connectivity_abstraction')
239 lib_env.UserInstallTargetLib(calib, 'connectivity_abstraction')