8 ca_os = env.get('TARGET_OS')
9 ca_transport = env.get('TARGET_TRANSPORT')
10 secured = env.get('SECURED')
11 multiple_owner = env.get('MULTIPLE_OWNER')
12 with_ra = env.get ('WITH_RA')
13 with_ra_ibb = env.get('WITH_RA_IBB')
14 with_tcp = env.get('WITH_TCP')
15 src_dir = env.get('SRC_DIR')
19 #####################################################################
20 # Source files and Target(s)
21 ######################################################################
23 print"Reading ca script %s"%ca_transport
25 env.PrependUnique(CPPPATH = [ os.path.join(root_dir, 'api') ])
27 with_upstream_libcoap = env.get('WITH_UPSTREAM_LIBCOAP')
28 if with_upstream_libcoap == '1':
29 # For bring up purposes only, we manually copy the forked version to where the unforked version is downloaded.
30 env.AppendUnique(CPPPATH = [os.path.join('#extlibs', 'libcoap', 'libcoap', 'include')])
31 env.AppendUnique(CPPDEFINES = ['WITH_UPSTREAM_LIBCOAP'])
33 # For bring up purposes only, the forked version will live here.
34 env.AppendUnique(CPPPATH = [ os.path.join(root_dir, 'lib', 'libcoap-4.1.1', 'include')])
36 env.AppendUnique(CPPPATH = [ os.path.join(root_dir, 'inc'),
37 os.path.join(src_dir, 'resource', 'csdk', 'logger', 'include'),
38 os.path.join(root_dir, 'common', 'inc'),
39 os.path.join(root_dir, 'util', 'inc') ])
41 if ca_os not in ['arduino', 'windows']:
42 env.AppendUnique(CPPDEFINES = ['WITH_POSIX'])
44 if ca_os not in ['darwin', 'ios', 'windows']:
45 env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
47 if ca_os in ['darwin','ios']:
48 env.AppendUnique(CPPDEFINES = ['_DARWIN_C_SOURCE'])
50 # Getting common source files
51 env.SConscript(os.path.join(root_dir, 'common', 'SConscript'))
53 # Getting util source files
54 env.SConscript(os.path.join(root_dir, 'util', 'SConscript'))
56 # The tinydtls library is found in '#extlibs/tinydtls', where the '#'
57 # is interpreted by SCons as the top-level iotivity directory where
58 # the SConscruct file is found.
59 build_dir = env.get('BUILD_DIR')
61 env.AppendUnique(CA_SRC = [os.path.join(ca_path,
62 'adapter_util/caadapterutils.c')])
64 if (('BLE' in ca_transport) or ('ALL' in ca_transport)):
65 env.AppendUnique(CA_SRC = [os.path.join(ca_path,
66 'adapter_util/cafragmentation.c')])
68 if env.get('SECURED') == '1':
69 env.SConscript(build_dir + 'extlibs/tinydtls/SConscript')
70 env.AppendUnique(CPPPATH = ['#extlibs/tinydtls'])
71 env.AppendUnique(CPPPATH = [src_dir + '/resource/csdk/security/include'])
72 env.AppendUnique(CPPDEFINES = ['__WITH_DTLS__'])
73 env.AppendUnique(CPPPATH = [os.path.join(root_dir, 'external/inc')])
74 tls_path = 'extlibs/mbedtls';
75 tls_headers_path = 'mbedtls/include';
76 if ca_os == 'tizen' and os.path.exists(root_dir + '/' + tls_path):
77 env.SConscript(os.path.join(root_dir, tls_path + '/SConscript'))
78 env.AppendUnique(CPPPATH = [os.path.join(root_dir, tls_path + '/' + tls_headers_path)])
80 if ca_os != 'android':
81 env.SConscript('#' + tls_path + '/SConscript')
82 env.AppendUnique(CPPPATH = ['#' + tls_path + '/' + tls_headers_path])
83 env.AppendUnique(CA_SRC = [os.path.join(ca_path, 'adapter_util/ca_adapter_net_ssl.c')])
85 if ((secured == '1') and (with_tcp == True)):
86 env.AppendUnique(CPPDEFINES = ['__WITH_TLS__'])
88 if (multiple_owner == '1'):
89 env.AppendUnique(CPPDEFINES=['_ENABLE_MULTIPLE_OWNER_'])
95 env.SConscript('#extlibs/wksxmppxep/SConscript')
97 if env.get('ROUTING') == 'GW':
98 env.AppendUnique(CPPDEFINES = ['ROUTING_GATEWAY'])
99 elif env.get('ROUTING') == 'EP':
100 env.AppendUnique(CPPDEFINES = ['ROUTING_EP'])
102 if ca_os == 'arduino':
103 env.AppendUnique(CPPDEFINES = ['SINGLE_THREAD'])
104 env.AppendUnique(CPPDEFINES = ['WITH_ARDUINO'])
105 print "setting WITH_ARDUINO"
107 'caconnectivitymanager.c',
108 'cainterfacecontroller.c',
109 'camessagehandler.c',
110 'canetworkconfigurator.c',
111 'caprotocolmessage.c',
112 'caretransmission.c',
116 'caconnectivitymanager.c',
117 'cainterfacecontroller.c',
118 'camessagehandler.c',
119 'canetworkconfigurator.c',
120 'caprotocolmessage.c',
121 'caqueueingthread.c',
122 'caretransmission.c',
124 if (('IP' in ca_transport) or ('ALL' in ca_transport)):
125 env.AppendUnique(CA_SRC = [os.path.join(ca_path, 'cablockwisetransfer.c') ])
126 env.AppendUnique(CPPDEFINES = ['WITH_BWT'])
129 os.path.join(ca_path, d) for d in ca_common_src ]
131 env.AppendUnique(CA_SRC = ca_common_src)
133 if 'ALL' in ca_transport:
137 transports.append('ra_adapter')
139 if ca_os in ['linux']:
140 transports.append('ip_adapter')
141 transports.append('bt_le_adapter')
142 elif ca_os in ['tizen']:
143 transports.append('ip_adapter')
144 transports.append('bt_edr_adapter')
145 transports.append('bt_le_adapter')
146 elif ca_os in ['android']:
147 transports.append('ip_adapter')
148 transports.append('bt_edr_adapter')
149 transports.append('bt_le_adapter')
150 transports.append('nfc_adapter')
151 elif ca_os in['darwin','ios', 'msys_nt', 'windows']:
152 transports.append('ip_adapter')
154 transports.append('ip_adapter')
155 transports.append('bt_edr_adapter')
156 transports.append('bt_le_adapter')
158 env.SConscript(dirs = [
159 os.path.join(ca_path, d) for d in transports ])
161 if 'IP' in ca_transport:
162 env.SConscript(os.path.join(ca_path, 'ip_adapter/SConscript'))
163 if ca_os == 'arduino':
165 transports = [ 'ip_adapter', 'tcp_adapter']
166 env.SConscript(dirs = [
167 os.path.join(ca_path, d) for d in transports ])
169 if 'BT' in ca_transport:
170 env.SConscript(os.path.join(ca_path, 'bt_edr_adapter/SConscript'))
172 if 'BLE' in ca_transport:
173 env.SConscript(os.path.join(ca_path, 'bt_le_adapter/SConscript'))
175 if 'NFC' in ca_transport:
176 env.SConscript(os.path.join(ca_path, 'nfc_adapter/SConscript'))
178 if ca_os in ['linux', 'tizen', 'android']:
180 env.SConscript(os.path.join(ca_path, 'tcp_adapter/SConscript'))
181 env.AppendUnique(CPPDEFINES = ['WITH_TCP'])
183 if ca_os in ['linux', 'tizen', 'android', 'arduino', 'ios']:
184 if (('BLE' in ca_transport) or ('BT' in ca_transport) or ('ALL' in ca_transport)):
185 env.AppendUnique(CPPDEFINES = ['WITH_TCP'])
187 print "Include path is %s" % env.get('CPPPATH')
188 print "Files path is %s" % env.get('CA_SRC')
190 lib_env = env.Clone()
191 lib_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
193 if env.get('LOGGING'):
194 lib_env.AppendUnique(CPPDEFINES=['TB_LOG'])
196 if ca_os == 'android':
197 lib_env.AppendUnique(LINKFLAGS = ['-Wl,-soname,libconnectivity_abstraction.so'])
199 if ca_os in ['android', 'tizen', 'linux', 'yocto']:
200 lib_env.AppendUnique(LIBS = ['coap'])
201 if lib_env.get('SECURED') == '1':
202 lib_env.AppendUnique(LIBS = ['mbedtls','mbedx509','mbedcrypto'])
203 if ca_os != 'android':
204 lib_env.AppendUnique(LIBS = ['rt'])
205 if ((lib_env.get('SECURED') == '1') and ((lib_env.get('WITH_TCP')) or (lib_env.get('WITH_CLOUD')))):
206 lib_env.AppendUnique(LIBS = ['mbedtls','mbedx509','mbedcrypto'])
207 static_calib = lib_env.StaticLibrary('connectivity_abstraction', env.get('CA_SRC'))
208 shared_calib = lib_env.SharedLibrary('connectivity_abstraction', lib_env.get('CA_SRC'))
209 calib = Flatten([static_calib, shared_calib])
210 elif ca_os in ['msys_nt', 'windows']:
211 lib_env.AppendUnique(LIBS = ['coap', 'mswsock', 'ws2_32', 'iphlpapi', 'logger'])
212 if lib_env.get('SECURED') == '1':
213 lib_env.AppendUnique(LIBS = ['mbedtls','mbedx509','mbedcrypto'])
214 calib = lib_env.StaticLibrary('connectivity_abstraction', env.get('CA_SRC'))
216 calib = lib_env.StaticLibrary('connectivity_abstraction', lib_env.get('CA_SRC'))
218 lib_env.InstallTarget(calib, 'connectivity_abstraction')
219 lib_env.UserInstallTargetLib(calib, 'connectivity_abstraction')