8 ca_os = env.get('TARGET_OS')
9 ca_transport = env.get('TARGET_TRANSPORT')
10 secured = env.get('SECURED')
11 with_mbedtls_static = env.get('WITH_MBEDTLS_STATIC_LIB');
12 multiple_owner = env.get('MULTIPLE_OWNER')
13 with_ra = env.get ('WITH_RA')
14 with_ra_ibb = env.get('WITH_RA_IBB')
15 with_tcp = env.get('WITH_TCP')
16 src_dir = env.get('SRC_DIR')
20 #####################################################################
21 # Source files and Target(s)
22 ######################################################################
24 print("Reading ca script %s"%ca_transport)
26 env.PrependUnique(CPPPATH = [ os.path.join(root_dir, 'api') ])
28 with_upstream_libcoap = env.get('WITH_UPSTREAM_LIBCOAP')
29 if with_upstream_libcoap == '1':
30 # For bring up purposes only, we manually copy the forked version to where the unforked version is downloaded.
31 env.AppendUnique(CPPPATH = [os.path.join('#extlibs', 'libcoap', 'libcoap', 'include')])
32 env.AppendUnique(CPPDEFINES = ['WITH_UPSTREAM_LIBCOAP'])
34 # For bring up purposes only, the forked version will live here.
35 env.AppendUnique(CPPPATH = [ os.path.join(root_dir, 'lib', 'libcoap-4.1.1', 'include')])
37 env.AppendUnique(CPPPATH = [ os.path.join(root_dir, 'inc'),
38 os.path.join(src_dir, 'resource', 'csdk', 'stack', 'include'),
39 os.path.join(src_dir, 'resource', 'csdk', 'logger', 'include'),
40 os.path.join(root_dir, 'common', 'inc'),
41 os.path.join(root_dir, '/usr', 'include','glib-2.0'),
42 os.path.join(root_dir, '/usr', 'lib','glib-2.0', 'include'),
43 os.path.join(root_dir, 'util', 'inc')])
45 if ca_os not in ['arduino', 'windows']:
46 env.AppendUnique(CPPDEFINES = ['WITH_POSIX'])
48 if ca_os not in ['darwin', 'ios', 'windows']:
49 env.AppendUnique(LINKFLAGS = ['-Wl,--no-undefined'])
51 if ca_os in ['darwin','ios']:
52 env.AppendUnique(CPPDEFINES = ['_DARWIN_C_SOURCE'])
54 if not env.get('RELEASE'):
55 env.PrependUnique(LIBS = ['gcov'])
56 env.AppendUnique(CCFLAGS = ['--coverage'])
58 # Getting common source files
59 env.SConscript(os.path.join(root_dir, 'common', 'SConscript'))
61 # Getting util source files
62 env.SConscript(os.path.join(root_dir, 'util', 'SConscript'))
64 build_dir = env.get('BUILD_DIR')
66 env.AppendUnique(CA_SRC = [os.path.join(ca_path,
67 'adapter_util/caadapterutils.c')])
69 if (('BLE' in ca_transport) or ('ALL' in ca_transport)):
70 env.AppendUnique(CA_SRC = [os.path.join(ca_path,
71 'adapter_util/cafragmentation.c')])
73 if env.get('SECURED') == '1':
74 env.SConscript(build_dir + 'extlibs/timer/SConscript')
75 env.AppendUnique(CPPPATH = ['#extlibs/timer'])
76 env.AppendUnique(CPPPATH = [src_dir + '/resource/csdk/security/include'])
77 env.AppendUnique(CPPDEFINES = ['__WITH_DTLS__'])
78 env.AppendUnique(CPPPATH = [os.path.join(root_dir, 'external/inc')])
79 tls_path = 'extlibs/mbedtls';
80 tls_headers_path = 'mbedtls/include';
81 if ca_os == 'tizen' and os.path.exists(root_dir + '/' + tls_path):
82 env.SConscript(os.path.join(root_dir, tls_path + '/SConscript'))
83 env.AppendUnique(CPPPATH = [os.path.join(root_dir, tls_path + '/' + tls_headers_path)])
85 if ca_os != 'android' and env.get('PLATFORM_TLS') == '0':
86 env.SConscript('#' + tls_path + '/SConscript')
87 env.AppendUnique(CPPPATH = ['#' + tls_path + '/' + tls_headers_path])
88 env.AppendUnique(CA_SRC = [os.path.join(ca_path, 'adapter_util/ca_adapter_net_ssl.c')])
90 if ((secured == '1') and (with_tcp == True)):
91 env.AppendUnique(CPPDEFINES = ['__WITH_TLS__'])
93 if (multiple_owner == '1'):
94 env.AppendUnique(CPPDEFINES=['MULTIPLE_OWNER'])
100 env.SConscript('#extlibs/wksxmppxep/SConscript')
102 if env.get('ROUTING') == 'GW':
103 env.AppendUnique(CPPDEFINES = ['ROUTING_GATEWAY'])
104 elif env.get('ROUTING') == 'EP':
105 env.AppendUnique(CPPDEFINES = ['ROUTING_EP'])
107 if env.get('WITH_PROXY'):
108 env.AppendUnique(CPPDEFINES = ['WITH_CHPROXY'])
110 if ca_os == 'arduino':
111 env.AppendUnique(CPPDEFINES = ['SINGLE_THREAD'])
112 env.AppendUnique(CPPDEFINES = ['WITH_ARDUINO'])
113 print("setting WITH_ARDUINO")
115 'caconnectivitymanager.c',
116 'cainterfacecontroller.c',
117 'camessagehandler.c',
118 'canetworkconfigurator.c',
119 'caprotocolmessage.c',
120 'caretransmission.c',
124 'caconnectivitymanager.c',
125 'cainterfacecontroller.c',
126 'camessagehandler.c',
127 'canetworkconfigurator.c',
128 'caprotocolmessage.c',
129 'caqueueingthread.c',
130 'caretransmission.c',
132 if (('IP' in ca_transport) or ('ALL' in ca_transport)):
133 env.AppendUnique(CA_SRC = [os.path.join(ca_path, 'cablockwisetransfer.c') ])
134 env.AppendUnique(CPPDEFINES = ['WITH_BWT'])
137 os.path.join(ca_path, d) for d in ca_common_src ]
139 env.AppendUnique(CA_SRC = ca_common_src)
141 if 'ALL' in ca_transport:
145 transports.append('ra_adapter')
147 if ca_os in ['linux']:
148 transports.append('ip_adapter')
149 transports.append('bt_le_adapter')
150 elif ca_os in ['tizen']:
151 transports.append('ip_adapter')
152 transports.append('bt_edr_adapter')
153 transports.append('bt_le_adapter')
154 elif ca_os in ['android']:
155 transports.append('ip_adapter')
156 transports.append('bt_edr_adapter')
157 transports.append('bt_le_adapter')
158 transports.append('nfc_adapter')
159 elif ca_os in['darwin','ios', 'msys_nt', 'windows']:
160 transports.append('ip_adapter')
162 transports.append('ip_adapter')
163 transports.append('bt_edr_adapter')
164 transports.append('bt_le_adapter')
166 env.SConscript(dirs = [
167 os.path.join(ca_path, d) for d in transports ])
169 if 'IP' in ca_transport:
170 env.SConscript(os.path.join(ca_path, 'ip_adapter/SConscript'))
171 if ca_os == 'arduino':
173 transports = [ 'ip_adapter', 'tcp_adapter']
174 env.SConscript(dirs = [
175 os.path.join(ca_path, d) for d in transports ])
177 if 'BT' in ca_transport:
178 env.SConscript(os.path.join(ca_path, 'bt_edr_adapter/SConscript'))
180 if 'BLE' in ca_transport:
181 env.SConscript(os.path.join(ca_path, 'bt_le_adapter/SConscript'))
183 if 'NFC' in ca_transport:
184 env.SConscript(os.path.join(ca_path, 'nfc_adapter/SConscript'))
186 if ca_os in ['linux', 'tizen', 'android', 'ios', 'tizenrt']:
188 env.SConscript(os.path.join(ca_path, 'tcp_adapter/SConscript'))
189 env.AppendUnique(CPPDEFINES = ['WITH_TCP'])
191 if ca_os in ['linux', 'tizen', 'android', 'arduino', 'ios']:
192 if (('BLE' in ca_transport) or ('BT' in ca_transport) or ('ALL' in ca_transport)):
193 env.AppendUnique(CPPDEFINES = ['WITH_TCP'])
195 print("Include path is %s" % env.get('CPPPATH'))
196 print("Files path is %s" % env.get('CA_SRC'))
198 lib_env = env.Clone()
199 lib_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')])
201 if env.get('LOGGING'):
202 lib_env.AppendUnique(CPPDEFINES=['TB_LOG'])
204 if ca_os == 'android':
205 lib_env.AppendUnique(LINKFLAGS = ['-Wl,-soname,libconnectivity_abstraction.so'])
207 if lib_env.get('SECURED') == '1':
208 if ca_os in ['windows', 'msys_nt', 'ios']:
209 lib_env.AppendUnique(LIBS = ['mbedtls','mbedx509','mbedcrypto'])
210 lib_env.AppendUnique(LIBS = ['timer'])
212 if with_mbedtls_static == '1':
213 lib_env.AppendUnique(LIBS = ['mbedtls','mbedx509','mbedcrypto'])
214 lib_env.AppendUnique(LIBS = ['timer'])
216 lib_env.AppendUnique(LIBPATH = [lib_env.get('BUILD_DIR')])
217 lib_env.AppendUnique(RPATH = [lib_env.get('BUILD_DIR')])
218 lib_env.PrependUnique(LIBS = ['mbedtls','mbedx509','mbedcrypto'])
219 lib_env.PrependUnique(LIBS = ['timer'])
221 if ca_os in ['tizen']:
222 lib_env.AppendUnique(LIBS=['pthread'])
224 if ca_os in ['android', 'tizen', 'linux']:
225 lib_env.AppendUnique(LIBS = ['coap'])
226 if ca_os != 'android':
227 lib_env.AppendUnique(LIBS = ['rt'])
228 static_calib = lib_env.StaticLibrary('connectivity_abstraction', env.get('CA_SRC'))
229 shared_calib = lib_env.SharedLibrary('connectivity_abstraction', lib_env.get('CA_SRC'))
230 calib = Flatten([static_calib, shared_calib])
231 elif ca_os in ['msys_nt', 'windows']:
232 lib_env.AppendUnique(LIBS = ['coap', 'mswsock', 'ws2_32', 'iphlpapi', 'logger'])
233 calib = lib_env.StaticLibrary('connectivity_abstraction', env.get('CA_SRC'))
235 calib = lib_env.StaticLibrary('connectivity_abstraction', lib_env.get('CA_SRC'))
237 lib_env.InstallTarget(calib, 'connectivity_abstraction')
238 lib_env.UserInstallTargetLib(calib, 'connectivity_abstraction')