Fix a defect detected by static code analyzer
[contrib/iotivity.git] / auto_build.py
1 #!/usr/bin/python
2
3 import os
4 import sys
5 import platform
6 import subprocess
7 import multiprocessing
8
9 # help message
10 def helpmsg(script):
11     helpstr = '''
12 Usage:
13     build:
14         python %s <targetbuild>
15         Allowed values for <target_build>: all, linux_unsecured, linux_secured, linux_unsecured_with_ra, linux_secured_with_ra, linux_unsecured_with_rd, linux_secured_with_rd, android, arduino, tizen, simulator, darwin, windows, msys
16         Note: \"linux\" will build \"linux_unsecured\", \"linux_secured\", \"linux_unsecured_with_ra\", \"linux_secured_with_ra\", \"linux_secured_with_rd\", \"linux_unsecured_with_mq\", \"linux_secured_with_tcp\" & \"linux_unsecured_with_tcp\" & \"linux_unsecured_with_rd\".
17         Any selection will build both debug and release versions of all available targets in the scope you've selected.
18         To choose any specific command, please use the SCons commandline directly. Please refer to [IOTIVITY_REPO]/Readme.scons.txt.
19     clean:
20         python %s -c
21     '''
22     print (helpstr % (script, script))
23     sys.exit()
24
25 def call_scons(build_options, extra_option_str):
26     """
27     This function formats and runs a scons command
28     Arguments:
29     build_options    -- {Dictionary} build flags (keys) associated with values;
30     extra_option_str -- {String} extra options to append to scons command
31     """
32     cmd_line = "scons VERBOSE=" + VERBOSE
33     for key in build_options:
34         cmd_line += " " + key + "=" + str(build_options[key])
35
36     cmd_line += " " + str(extra_option_str)
37
38     print ("Running : " + cmd_line)
39     sys.stdout.flush()
40     exit_code = subprocess.Popen(cmd_line, shell=True).wait()
41     if exit_code != 0:
42         exit(exit_code)
43
44 def build_all(flag, extra_option_str):
45     if platform.system() == "Linux":
46         build_linux_unsecured(flag, extra_option_str)
47         build_linux_secured(flag, extra_option_str)
48         build_linux_unsecured_with_ra(flag, extra_option_str)
49         build_linux_secured_with_ra(flag, extra_option_str)
50         build_linux_unsecured_with_rm(flag, extra_option_str)
51         build_linux_unsecured_with_rd(flag, extra_option_str)
52         build_linux_secured_with_rd(flag, extra_option_str)
53         build_linux_unsecured_with_mq(flag, extra_option_str)
54         build_linux_unsecured_with_tcp(flag, extra_option_str)
55         build_linux_secured_with_tcp(flag, extra_option_str)
56         build_linux_unsecured_with_java(flag, extra_option_str)
57         build_linux_secured_with_java(flag, extra_option_str)
58         build_simulator(flag, extra_option_str)
59
60         build_android(flag, extra_option_str)
61         build_arduino(flag, extra_option_str)
62         build_tizen(flag, extra_option_str)
63
64     if platform.system() == "Windows":
65         build_windows(flag, extra_option_str)
66
67     if platform.system() == "Darwin":
68         build_darwin(flag, extra_option_str)
69
70 def build_linux(flag, extra_option_str):
71     build_linux_unsecured(flag, extra_option_str)
72     build_linux_secured(flag, extra_option_str)
73
74 def build_linux_unsecured(flag, extra_option_str):
75     print ("*********** Build for linux ************")
76     build_options = {
77                         'RELEASE':flag,
78                         'SECURED':0,
79                     }
80     call_scons(build_options, extra_option_str)
81
82 def build_linux_secured_with_tcp(flag, extra_option_str):
83     print ("*********** Build for linux with Secured TCP ************")
84     build_options = {
85                         'RELEASE':flag,
86                         'WITH_TCP': 1,
87                         'WITH_CLOUD':1,
88                     }
89     call_scons(build_options, extra_option_str)
90
91 def build_linux_unsecured_with_java(flag, extra_option_str):
92     print ("*********** Build for linux with Java support ************")
93     build_options = {
94                         'RELEASE':flag,
95                         'BUILD_JAVA': 1,
96                         'TARGET_TRANSPORT': 'IP',
97                     }
98     call_scons(build_options, extra_option_str)
99
100 def build_linux_secured_with_java(flag, extra_option_str):
101     print ("*********** Build for linux with Java support and secured ************")
102     build_options = {
103                         'RELEASE':flag,
104                         'BUILD_JAVA': 1,
105                         'TARGET_TRANSPORT': 'IP',
106                         'SECURED': 1,
107                     }
108     call_scons(build_options, extra_option_str)
109
110 def build_linux_unsecured_with_tcp(flag, extra_option_str):
111     print ("*********** Build for linux with TCP ************")
112     build_options = {
113                         'RELEASE':flag,
114                         'WITH_TCP': 1,
115                         'TARGET_TRANSPORT': 'IP',
116                         'SECURED':0,
117                     }
118     call_scons(build_options, extra_option_str)
119
120 def build_linux_unsecured_with_rm(flag, extra_option_str):
121     print ("*********** Build for linux with RoutingManager************")
122     build_options = {
123                         'ROUTING':'GW',
124                         'RELEASE':flag,
125                         'SECURED':0,
126                     }
127     call_scons(build_options, extra_option_str)
128
129 def build_linux_secured(flag, extra_option_str):
130     print ("*********** Build for linux with Security *************")
131     build_options = {
132                         'RELEASE':flag,
133                     }
134     call_scons(build_options, extra_option_str)
135
136 def build_linux_unsecured_with_ra(flag, extra_option_str):
137     print ("*********** Build for linux With Remote Access *************")
138     build_options = {
139                         'RELEASE':flag,
140                         'WITH_RA':1,
141                         'WITH_RA_IBB':1,
142                         'SECURED':0,
143                     }
144     call_scons(build_options, extra_option_str)
145
146 def build_linux_secured_with_ra(flag, extra_option_str):
147     print ("*********** Build for linux With Remote Access & Security ************")
148     build_options = {
149                         'RELEASE':flag,
150                         'WITH_RA':1,
151                         'WITH_RA_IBB':1,
152                     }
153     call_scons(build_options, extra_option_str)
154
155 def build_linux_unsecured_with_rd(flag, extra_option_str):
156     print ("*********** Build for linux With Resource Directory *************")
157     build_options = {
158                         'RELEASE':flag,
159                         'RD_MODE':'all',
160                         'SECURED':0,
161                     }
162     call_scons(build_options, extra_option_str)
163
164 def build_linux_secured_with_rd(flag, extra_option_str):
165     print ("*********** Build for linux With Resource Directory & Security ************")
166     build_options = {
167                         'RELEASE':flag,
168                         'RD_MODE':'all',
169                     }
170     call_scons(build_options, extra_option_str)
171
172 def build_linux_unsecured_with_mq(flag, extra_option_str):
173     print ("*********** Build for linux With Message Queue ************")
174     build_options = {
175                         'RELEASE':flag,
176                         'WITH_MQ':'PUB,SUB,BROKER',
177                         'SECURED':0,
178                     }
179     call_scons(build_options, extra_option_str)
180
181 def build_linux_unsecured_with_tcp(flag, extra_option_str):
182     print ("*********** Build for linux With tcp ************")
183     build_options = {
184                         'RELEASE':flag,
185                         'WITH_TCP':'1',
186                         'SECURED':0,
187                     }
188     call_scons(build_options, extra_option_str)
189
190 def build_android(flag, extra_option_str):
191     # Note: for android, as oic-resource uses C++11 feature stoi and to_string,
192     # it requires gcc-4.9, currently only android-ndk-r10(for linux)
193     # and windows android-ndk-r10(64bit target version) support these features.
194     print ("*********** Build for android armeabi *************")
195     build_options = {
196                         'TARGET_OS':'android',
197                         'TARGET_ARCH':'armeabi',
198                         'RELEASE':flag,
199                     }
200     call_scons(build_options, extra_option_str)
201
202 def build_android_x86(flag, extra_option_str):
203     """ Build Android x86 Suite """
204     build_android_x86_with_ip(flag, extra_option_str)
205     build_android_x86_with_bt(flag, extra_option_str)
206     build_android_x86_with_ble(flag, extra_option_str)
207
208 def build_android_x86_with_ip(flag, extra_option_str):
209     print ("*********** Build for android x86 *************")
210     build_options = {
211                         'TARGET_OS':'android',
212                         'TARGET_ARCH':'x86',
213                         'RELEASE':flag,
214                         'TARGET_TRANSPORT':'IP',
215                     }
216     call_scons(build_options, extra_option_str)
217
218 def build_android_x86_with_bt(flag, extra_option_str):
219     print ("*********** Build for android x86 with Bluetooth *************")
220     build_options = {
221                         'TARGET_OS':'android',
222                         'TARGET_ARCH':'x86',
223                         'RELEASE':flag,
224                         'TARGET_TRANSPORT':'BT',
225                     }
226     call_scons(build_options, extra_option_str)
227
228 def build_android_x86_with_ble(flag, extra_option_str):
229     print ("*********** Build for android x86 with Bluetooth Low Energy *************")
230     build_options = {
231                         'TARGET_OS':'android',
232                         'TARGET_ARCH':'x86',
233                         'RELEASE':flag,
234                         'TARGET_TRANSPORT':'BLE',
235                     }
236     call_scons(build_options, extra_option_str)
237
238 def build_android_x86_with_rm(flag, extra_option_str):
239     """ Build Android x86 Routing Manager Suite """
240     build_android_x86_with_rm_and_ip(flag, extra_option_str)
241     build_android_x86_with_rm_and_bt(flag, extra_option_str)
242     build_android_x86_with_rm_and_ble(flag, extra_option_str)
243
244 def build_android_x86_with_rm_and_ip(flag, extra_option_str):
245     print ("*********** Build for android x86 with Routing Manager *************")
246     build_options = {
247                         'TARGET_OS':'android',
248                         'TARGET_ARCH':'x86',
249                         'ROUTING':'GW',
250                         'RELEASE':flag,
251                         'TARGET_TRANSPORT':'IP',
252                     }
253     call_scons(build_options, extra_option_str)
254
255 def build_android_x86_with_rm_and_bt(flag, extra_option_str):
256     print ("*********** Build for android x86 with Routing Manager and Bluetooth *************")
257     build_options = {
258                         'TARGET_OS':'android',
259                         'TARGET_ARCH':'x86',
260                         'ROUTING':'GW',
261                         'RELEASE':flag,
262                         'TARGET_TRANSPORT':'BT',
263                     }
264     call_scons(build_options, extra_option_str)
265
266 def build_android_x86_with_rm_and_ble(flag, extra_option_str):
267     print ("*********** Build for android x86 with Routing Manager and Bluetooth Low Energy *************")
268     build_options = {
269                         'TARGET_OS':'android',
270                         'TARGET_ARCH':'x86',
271                         'ROUTING':'GW',
272                         'RELEASE':flag,
273                         'TARGET_TRANSPORT':'BLE',
274                     }
275     call_scons(build_options, extra_option_str)
276
277 def build_android_armeabi(flag, extra_option_str):
278     """ Build Android Armeabi Suite """
279     build_android_armeabi_with_ip(flag, extra_option_str)
280     build_android_armeabi_with_bt(flag, extra_option_str)
281     build_android_armeabi_with_ble(flag, extra_option_str)
282
283 def build_android_armeabi_with_ip(flag, extra_option_str):
284     print ("*********** Build for android armeabi *************")
285     build_options = {
286                         'TARGET_OS':'android',
287                         'TARGET_ARCH':'armeabi',
288                         'RELEASE':flag,
289                         'TARGET_TRANSPORT':'IP',
290                     }
291     call_scons(build_options, extra_option_str)
292
293 def build_android_armeabi_with_bt(flag, extra_option_str):
294     print ("*********** Build for android armeabi with Bluetooth *************")
295     build_options = {
296                         'TARGET_OS':'android',
297                         'TARGET_ARCH':'armeabi',
298                         'RELEASE':flag,
299                         'TARGET_TRANSPORT':'BT',
300                     }
301     call_scons(build_options, extra_option_str)
302
303 def build_android_armeabi_with_ble(flag, extra_option_str):
304     print ("*********** Build for android armeabi with Bluetooth Low Energy *************")
305     build_options = {
306                         'TARGET_OS':'android',
307                         'TARGET_ARCH':'armeabi',
308                         'RELEASE':flag,
309                         'TARGET_TRANSPORT':'BLE',
310                     }
311     call_scons(build_options, extra_option_str)
312
313 def build_android_armeabi_with_rm(flag, extra_option_str):
314     """ Build Android Armeabi Routing Manager Suite """
315     build_android_armeabi_with_rm_and_ip(flag, extra_option_str)
316     build_android_armeabi_with_rm_and_bt(flag, extra_option_str)
317     build_android_armeabi_with_rm_and_ble(flag, extra_option_str)
318
319 def build_android_armeabi_with_rm_and_ip(flag, extra_option_str):
320     print ("*********** Build for android armeabi with Routing Manager *************")
321     build_options = {
322                         'TARGET_OS':'android',
323                         'TARGET_ARCH':'armeabi',
324                         'ROUTING':'GW',
325                         'RELEASE':flag,
326                         'TARGET_TRANSPORT':'IP',
327                     }
328     call_scons(build_options, extra_option_str)
329
330 def build_android_armeabi_with_rm_and_bt(flag, extra_option_str):
331     print ("*********** Build for android armeabi with Routing Manager and Bluetooth *************")
332     build_options = {
333                         'TARGET_OS':'android',
334                         'TARGET_ARCH':'armeabi',
335                         'ROUTING':'GW',
336                         'RELEASE':flag,
337                         'TARGET_TRANSPORT':'BT',
338                     }
339     call_scons(build_options, extra_option_str)
340
341 def build_android_armeabi_with_rm_and_ble(flag, extra_option_str):
342     print ("*********** Build for android armeabi with Routing Manager and Bluetooth Low Energy *************")
343     build_options = {
344                         'TARGET_OS':'android',
345                         'TARGET_ARCH':'armeabi',
346                         'ROUTING':'GW',
347                         'RELEASE':flag,
348                         'TARGET_TRANSPORT':'BLE',
349                     }
350     call_scons(build_options, extra_option_str)
351
352 def build_arduino(flag, extra_option_str):
353     print ("*********** Build for arduino avr *************")
354     extra_option_str = "resource " + extra_option_str
355     build_options = {
356                         'TARGET_OS':'arduino',
357                         'UPLOAD':'false',
358                         'BOARD':'mega',
359                         'TARGET_ARCH':'avr',
360                         'TARGET_TRANSPORT':'IP',
361                         'SHIELD':'ETH',
362                         'RELEASE':flag,
363                     }
364     call_scons(build_options, extra_option_str)
365
366     build_options['SHIELD'] = 'WIFI'
367     call_scons(build_options, extra_option_str)
368
369     build_options['TARGET_TRANSPORT'] = 'BLE'
370     build_options['SHIELD']           = 'RBL_NRF8001'
371     call_scons(build_options, extra_option_str)
372
373     print ("*********** Build for arduino arm *************")
374     build_options['BOARD']            = 'arduino_due_x'
375     build_options['TARGET_ARCH']      = 'arm'
376     build_options['TARGET_TRANSPORT'] = 'IP'
377     build_options['SHIELD']           = 'ETH'
378     call_scons(build_options, extra_option_str)
379
380     build_options['SHIELD'] = 'WIFI'
381     call_scons(build_options, extra_option_str)
382
383     # BLE support for the Arduino Due is currently unavailable.
384
385 def build_tizen(flag, extra_option_str):
386     print ("*********** Build for Tizen *************")
387     cmd_line = "/bin/sh " + os.getcwd() + "/gbsbuild.sh"
388     print ("Running : " + cmd_line)
389     exit_code = subprocess.Popen([cmd_line], shell=True).wait()
390     if exit_code != 0:
391         exit(exit_code)
392
393     print ("*********** Build for Tizen octbstack lib and sample with security *************")
394     extra_option_str = "-f resource/csdk/stack/samples/tizen/build/SConscript " + extra_option_str
395     build_options = {
396                         'TARGET_OS':'tizen',
397                         'TARGET_TRANSPORT':'IP',
398                         'LOGGING':'true',
399                         'RELEASE':flag,
400                     }
401     call_scons(build_options, extra_option_str)
402
403     print ("*********** Build for Tizen octbstack lib and sample *************")
404     build_options['SECURED'] = 0
405     call_scons(build_options, extra_option_str)
406
407     print ("*********** Build for Tizen octbstack lib and sample with Routing Manager*************")
408     build_options['ROUTING'] = 'GW'
409     call_scons(build_options, extra_option_str)
410
411 # Mac OS and iOS
412 def build_darwin(flag, extra_option_str):
413     print ("*********** Build for OSX *************")
414     build_options = {
415                         'TARGET_OS':'darwin',
416                         'SYS_VERSION':'10.9',
417                         'RELEASE':flag,
418                     }
419     call_scons(build_options, extra_option_str)
420
421     print ("*********** Build for IOS i386 *************")
422     build_options = {
423                         'TARGET_OS':'ios',
424                         'TARGET_ARCH':'i386',
425                         'SYS_VERSION':'7.0',
426                         'RELEASE':flag,
427                     }
428     call_scons(build_options, extra_option_str)
429
430     print ("*********** Build for IOS x86_64 *************")
431     build_options['TARGET_ARCH'] = 'x86_64'
432     call_scons(build_options, extra_option_str)
433
434     print ("*********** Build for IOS armv7 *************")
435     build_options['TARGET_ARCH'] = 'armv7'
436     call_scons(build_options, extra_option_str)
437
438     print ("*********** Build for IOS armv7s *************")
439     build_options['TARGET_ARCH'] = 'armv7s'
440     call_scons(build_options, extra_option_str)
441
442     print ("*********** Build for IOS arm64 *************")
443     build_options['TARGET_ARCH'] = 'arm64'
444     call_scons(build_options, extra_option_str)
445
446 # Windows
447 def build_windows(flag, extra_option_str):
448     print ("*********** Build for Windows *************")
449     os.environ["SCONSFLAGS"] = ""
450     build_options = {
451                         'TARGET_OS':'windows',
452                         'TARGET_ARCH':'amd64',
453                         'RELEASE':flag,
454                         'WITH_RA':0,
455                         'TARGET_TRANSPORT':'IP',
456                         'WITH_TCP':0,
457                         'BUILD_SAMPLE':'ON',
458                         'LOGGING':'off',
459                         'TEST':1,
460                         'RD_MODE':'all',
461                     }
462     call_scons(build_options, extra_option_str)
463
464 # Windows msys
465 def build_msys(flag, extra_option_str):
466     print ("*********** Build for msys_nt *************")
467     os.environ["SCONSFLAGS"] = ""
468     build_options = {
469                         'TARGET_OS':'msys_nt',
470                         'TARGET_ARCH':'x86_64',
471                         'RELEASE':flag,
472                         'WITH_RA':0,
473                         'TARGET_TRANSPORT':'IP',
474                         'WITH_TCP':0,
475                         'BUILD_SAMPLE':'ON',
476                         'LOGGING':'off',
477                         'TEST':1,
478                         'RD_MODE':'all',
479                     }
480     call_scons(build_options, extra_option_str)
481
482 def build_simulator(flag, extra_option_str):
483     print ("*********** Build for simulator plugin *************")
484     build_options = {
485                         'SIMULATOR':1,
486                         'RELEASE':flag,
487                     }
488     call_scons(build_options, extra_option_str)
489
490 def unit_tests():
491     print ("*********** Unit test Start *************")
492     build_options = {
493                         'RELEASE':'false',
494                     }
495     extra_option_str = "-c ."
496     call_scons(build_options, extra_option_str)
497
498     build_options = {
499                         'TEST':1,
500                         'RELEASE':'false',
501                         'SECURED':0,
502                     }
503     extra_option_str = ""
504     call_scons(build_options, extra_option_str)
505
506     build_options = {
507                         'TEST':1,
508                         'SECURED':1,
509                         'RELEASE':'false',
510                     }
511     call_scons(build_options, extra_option_str)
512
513     print ("*********** Unit test Stop *************")
514
515 # Main module starts here
516 if os.getenv("SCONSFLAGS", "") == "":
517     os.environ["SCONSFLAGS"] = "-Q -j " + str(multiprocessing.cpu_count())
518
519 arg_num     = len(sys.argv)
520 script_name = sys.argv[0]
521
522 # May be overridden in user's shell
523 VERBOSE = os.getenv("VERBOSE", "1")
524
525 if arg_num == 1:
526     build_all("true", "")
527     build_all("false", "")
528     unit_tests()
529
530 elif arg_num == 2:
531     if str(sys.argv[1]) == '-c':
532         build_all("true", "-c")
533         build_all("false", "-c")
534
535     elif str(sys.argv[1]) == "all":
536         build_all("true", "")
537         build_all("false", "")
538         unit_tests()
539
540     elif str(sys.argv[1]) == "linux":
541         build_linux("true", "")
542         build_linux("false", "")
543
544     elif str(sys.argv[1]) == "linux_unsecured":
545         build_linux_unsecured("true", "")
546         build_linux_unsecured("false", "")
547         build_linux_unsecured_with_rm("true", "")
548         build_linux_unsecured_with_rm("false", "")
549
550     elif str(sys.argv[1]) == "linux_secured":
551         build_linux_secured("true", "")
552         build_linux_secured("false", "")
553
554     elif str(sys.argv[1]) == "linux_unsecured_with_ra":
555         build_linux_unsecured_with_ra("true", "")
556         build_linux_unsecured_with_ra("false", "")
557
558     elif str(sys.argv[1]) == "linux_secured_with_ra":
559         build_linux_secured_with_ra("true", "")
560         build_linux_secured_with_ra("false", "")
561
562     elif str(sys.argv[1]) == "linux_unsecured_with_rd":
563         build_linux_unsecured_with_rd("true", "")
564         build_linux_unsecured_with_rd("false", "")
565
566     elif str(sys.argv[1]) == "linux_secured_with_rd":
567         build_linux_secured_with_rd("true", "")
568         build_linux_secured_with_rd("false", "")
569
570     elif str(sys.argv[1]) == "linux_unsecured_with_mq":
571         build_linux_unsecured_with_mq("true", "")
572         build_linux_unsecured_with_mq("false", "")
573
574     elif str(sys.argv[1]) == "linux_unsecured_with_tcp":
575         build_linux_unsecured_with_tcp("true", "")
576         build_linux_unsecured_with_tcp("false", "")
577
578     elif str(sys.argv[1]) == "linux_secured_with_tcp":
579         build_linux_secured_with_tcp("false", "")
580         build_linux_secured_with_tcp("true", "")
581
582     elif str(sys.argv[1]) == "linux_unsecured_with_java":
583         build_linux_unsecured_with_java("false", "")
584         build_linux_unsecured_with_java("true", "")
585
586     elif str(sys.argv[1]) == "linux_secured_with_java":
587         build_linux_secured_with_java("false", "")
588         build_linux_secured_with_java("true", "")
589
590     elif str(sys.argv[1]) == "android":
591         build_android("true", "")
592         build_android("false", "")
593
594     elif str(sys.argv[1]) == "android_x86":
595         build_android_x86("true", "")
596         build_android_x86("false", "")
597         build_android_x86_with_rm("true", "")
598         build_android_x86_with_rm("false", "")
599
600     elif str(sys.argv[1]) == "android_x86_with_ip":
601         build_android_x86_with_ip("true", "")
602         build_android_x86_with_ip("false", "")
603
604     elif str(sys.argv[1]) == "android_x86_with_bt":
605         build_android_x86_with_bt("true", "")
606         build_android_x86_with_bt("false", "")
607
608     elif str(sys.argv[1]) == "android_x86_with_ble":
609         build_android_x86_with_ble("true", "")
610         build_android_x86_with_ble("false", "")
611
612     elif str(sys.argv[1]) == "android_x86_with_rm_and_ip":
613         build_android_x86_with_rm_and_ip("true", "")
614         build_android_x86_with_rm_and_ip("false", "")
615
616     elif str(sys.argv[1]) == "android_x86_with_rm_and_bt":
617         build_android_x86_with_rm_and_bt("true", "")
618         build_android_x86_with_rm_and_bt("false", "")
619
620     elif str(sys.argv[1]) == "android_x86_with_rm_and_ble":
621         build_android_x86_with_rm_and_ble("true", "")
622         build_android_x86_with_rm_and_ble("false", "")
623
624     elif str(sys.argv[1]) == "android_armeabi":
625         build_android_armeabi("true", "")
626         build_android_armeabi("false", "")
627         build_android_armeabi_with_rm("true", "")
628         build_android_armeabi_with_rm("false", "")
629
630     elif str(sys.argv[1]) == "android_armeabi_with_ip":
631         build_android_armeabi_with_ip("true", "")
632         build_android_armeabi_with_ip("false", "")
633
634     elif str(sys.argv[1]) == "android_armeabi_with_bt":
635         build_android_armeabi_with_bt("true", "")
636         build_android_armeabi_with_bt("false", "")
637
638     elif str(sys.argv[1]) == "android_armeabi_with_ble":
639         build_android_armeabi_with_ble("true", "")
640         build_android_armeabi_with_ble("false", "")
641
642     elif str(sys.argv[1]) == "android_armeabi_with_rm_and_ip":
643         build_android_armeabi_with_rm_and_ip("true", "")
644         build_android_armeabi_with_rm_and_ip("false", "")
645
646     elif str(sys.argv[1]) == "android_armeabi_with_rm_and_bt":
647         build_android_armeabi_with_rm_and_bt("true", "")
648         build_android_armeabi_with_rm_and_bt("false", "")
649
650     elif str(sys.argv[1]) == "android_armeabi_with_rm_and_ble":
651         build_android_armeabi_with_rm_and_ble("true", "")
652         build_android_armeabi_with_rm_and_ble("false", "")
653
654     elif str(sys.argv[1]) == "arduino":
655         build_arduino("true", "")
656         build_arduino("false", "")
657
658     elif str(sys.argv[1]) == "windows":
659         build_windows("true", "")
660         build_windows("false", "")
661
662     elif str(sys.argv[1]) == "msys":
663         build_msys("true", "")
664         build_msys("false", "")
665
666     elif str(sys.argv[1]) == "tizen":
667         build_tizen("true", "")
668         build_tizen("false", "")
669
670     elif str(sys.argv[1]) == "simulator":
671         build_simulator("true", "")
672         build_simulator("false", "")
673
674     elif str(sys.argv[1]) == "darwin":
675         build_darwin("true", "")
676         build_darwin("false", "")
677
678     elif str(sys.argv[1]) == "unit_tests":
679         unit_tests()
680
681     else:
682         helpmsg(script_name)
683 else:
684         helpmsg(script_name)
685
686 print ("===================== done =====================")