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.
22 print (helpstr % (script, script))
25 def call_scons(build_options, extra_option_str):
27 This function formats and runs a scons command
29 build_options -- {Dictionary} build flags (keys) associated with values;
30 extra_option_str -- {String} extra options to append to scons command
32 cmd_line = "scons VERBOSE=" + VERBOSE
33 for key in build_options:
34 cmd_line += " " + key + "=" + str(build_options[key])
36 cmd_line += " " + str(extra_option_str)
38 print ("Running : " + cmd_line)
40 exit_code = subprocess.Popen(cmd_line, shell=True).wait()
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)
60 build_android(flag, extra_option_str)
61 build_arduino(flag, extra_option_str)
62 build_tizen(flag, extra_option_str)
64 if platform.system() == "Windows":
65 build_windows(flag, extra_option_str)
67 if platform.system() == "Darwin":
68 build_darwin(flag, extra_option_str)
70 def build_linux(flag, extra_option_str):
71 build_linux_unsecured(flag, extra_option_str)
72 build_linux_secured(flag, extra_option_str)
74 def build_linux_unsecured(flag, extra_option_str):
75 print ("*********** Build for linux ************")
80 call_scons(build_options, extra_option_str)
82 def build_linux_secured_with_tcp(flag, extra_option_str):
83 print ("*********** Build for linux with Secured TCP ************")
89 call_scons(build_options, extra_option_str)
91 def build_linux_unsecured_with_java(flag, extra_option_str):
92 print ("*********** Build for linux with Java support ************")
96 'TARGET_TRANSPORT': 'IP',
98 call_scons(build_options, extra_option_str)
100 def build_linux_secured_with_java(flag, extra_option_str):
101 print ("*********** Build for linux with Java support and secured ************")
105 'TARGET_TRANSPORT': 'IP',
108 call_scons(build_options, extra_option_str)
110 def build_linux_unsecured_with_tcp(flag, extra_option_str):
111 print ("*********** Build for linux with TCP ************")
115 'TARGET_TRANSPORT': 'IP',
118 call_scons(build_options, extra_option_str)
120 def build_linux_unsecured_with_rm(flag, extra_option_str):
121 print ("*********** Build for linux with RoutingManager************")
127 call_scons(build_options, extra_option_str)
129 def build_linux_secured(flag, extra_option_str):
130 print ("*********** Build for linux with Security *************")
134 call_scons(build_options, extra_option_str)
136 def build_linux_unsecured_with_ra(flag, extra_option_str):
137 print ("*********** Build for linux With Remote Access *************")
144 call_scons(build_options, extra_option_str)
146 def build_linux_secured_with_ra(flag, extra_option_str):
147 print ("*********** Build for linux With Remote Access & Security ************")
153 call_scons(build_options, extra_option_str)
155 def build_linux_unsecured_with_rd(flag, extra_option_str):
156 print ("*********** Build for linux With Resource Directory *************")
162 call_scons(build_options, extra_option_str)
164 def build_linux_secured_with_rd(flag, extra_option_str):
165 print ("*********** Build for linux With Resource Directory & Security ************")
170 call_scons(build_options, extra_option_str)
172 def build_linux_unsecured_with_mq(flag, extra_option_str):
173 print ("*********** Build for linux With Message Queue ************")
176 'WITH_MQ':'PUB,SUB,BROKER',
179 call_scons(build_options, extra_option_str)
181 def build_linux_unsecured_with_tcp(flag, extra_option_str):
182 print ("*********** Build for linux With tcp ************")
188 call_scons(build_options, extra_option_str)
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 *************")
196 'TARGET_OS':'android',
197 'TARGET_ARCH':'armeabi',
200 call_scons(build_options, extra_option_str)
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)
208 def build_android_x86_with_ip(flag, extra_option_str):
209 print ("*********** Build for android x86 *************")
211 'TARGET_OS':'android',
214 'TARGET_TRANSPORT':'IP',
216 call_scons(build_options, extra_option_str)
218 def build_android_x86_with_bt(flag, extra_option_str):
219 print ("*********** Build for android x86 with Bluetooth *************")
221 'TARGET_OS':'android',
224 'TARGET_TRANSPORT':'BT',
226 call_scons(build_options, extra_option_str)
228 def build_android_x86_with_ble(flag, extra_option_str):
229 print ("*********** Build for android x86 with Bluetooth Low Energy *************")
231 'TARGET_OS':'android',
234 'TARGET_TRANSPORT':'BLE',
236 call_scons(build_options, extra_option_str)
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)
244 def build_android_x86_with_rm_and_ip(flag, extra_option_str):
245 print ("*********** Build for android x86 with Routing Manager *************")
247 'TARGET_OS':'android',
251 'TARGET_TRANSPORT':'IP',
253 call_scons(build_options, extra_option_str)
255 def build_android_x86_with_rm_and_bt(flag, extra_option_str):
256 print ("*********** Build for android x86 with Routing Manager and Bluetooth *************")
258 'TARGET_OS':'android',
262 'TARGET_TRANSPORT':'BT',
264 call_scons(build_options, extra_option_str)
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 *************")
269 'TARGET_OS':'android',
273 'TARGET_TRANSPORT':'BLE',
275 call_scons(build_options, extra_option_str)
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)
283 def build_android_armeabi_with_ip(flag, extra_option_str):
284 print ("*********** Build for android armeabi *************")
286 'TARGET_OS':'android',
287 'TARGET_ARCH':'armeabi',
289 'TARGET_TRANSPORT':'IP',
291 call_scons(build_options, extra_option_str)
293 def build_android_armeabi_with_bt(flag, extra_option_str):
294 print ("*********** Build for android armeabi with Bluetooth *************")
296 'TARGET_OS':'android',
297 'TARGET_ARCH':'armeabi',
299 'TARGET_TRANSPORT':'BT',
301 call_scons(build_options, extra_option_str)
303 def build_android_armeabi_with_ble(flag, extra_option_str):
304 print ("*********** Build for android armeabi with Bluetooth Low Energy *************")
306 'TARGET_OS':'android',
307 'TARGET_ARCH':'armeabi',
309 'TARGET_TRANSPORT':'BLE',
311 call_scons(build_options, extra_option_str)
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)
319 def build_android_armeabi_with_rm_and_ip(flag, extra_option_str):
320 print ("*********** Build for android armeabi with Routing Manager *************")
322 'TARGET_OS':'android',
323 'TARGET_ARCH':'armeabi',
326 'TARGET_TRANSPORT':'IP',
328 call_scons(build_options, extra_option_str)
330 def build_android_armeabi_with_rm_and_bt(flag, extra_option_str):
331 print ("*********** Build for android armeabi with Routing Manager and Bluetooth *************")
333 'TARGET_OS':'android',
334 'TARGET_ARCH':'armeabi',
337 'TARGET_TRANSPORT':'BT',
339 call_scons(build_options, extra_option_str)
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 *************")
344 'TARGET_OS':'android',
345 'TARGET_ARCH':'armeabi',
348 'TARGET_TRANSPORT':'BLE',
350 call_scons(build_options, extra_option_str)
352 def build_arduino(flag, extra_option_str):
353 print ("*********** Build for arduino avr *************")
354 extra_option_str = "resource " + extra_option_str
356 'TARGET_OS':'arduino',
360 'TARGET_TRANSPORT':'IP',
364 call_scons(build_options, extra_option_str)
366 build_options['SHIELD'] = 'WIFI'
367 call_scons(build_options, extra_option_str)
369 build_options['TARGET_TRANSPORT'] = 'BLE'
370 build_options['SHIELD'] = 'RBL_NRF8001'
371 call_scons(build_options, extra_option_str)
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)
380 build_options['SHIELD'] = 'WIFI'
381 call_scons(build_options, extra_option_str)
383 # BLE support for the Arduino Due is currently unavailable.
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 subprocess.Popen([cmd_line], shell=True).wait()
391 print ("*********** Build for Tizen octbstack lib and sample with security *************")
392 extra_option_str = "-f resource/csdk/stack/samples/tizen/build/SConscript " + extra_option_str
395 'TARGET_TRANSPORT':'IP',
399 call_scons(build_options, extra_option_str)
401 print ("*********** Build for Tizen octbstack lib and sample *************")
402 build_options['SECURED'] = 0
403 call_scons(build_options, extra_option_str)
405 print ("*********** Build for Tizen octbstack lib and sample with Routing Manager*************")
406 build_options['ROUTING'] = 'GW'
407 call_scons(build_options, extra_option_str)
410 def build_darwin(flag, extra_option_str):
411 print ("*********** Build for OSX *************")
413 'TARGET_OS':'darwin',
414 'SYS_VERSION':'10.9',
417 call_scons(build_options, extra_option_str)
419 print ("*********** Build for IOS i386 *************")
422 'TARGET_ARCH':'i386',
426 call_scons(build_options, extra_option_str)
428 print ("*********** Build for IOS x86_64 *************")
429 build_options['TARGET_ARCH'] = 'x86_64'
430 call_scons(build_options, extra_option_str)
432 print ("*********** Build for IOS armv7 *************")
433 build_options['TARGET_ARCH'] = 'armv7'
434 call_scons(build_options, extra_option_str)
436 print ("*********** Build for IOS armv7s *************")
437 build_options['TARGET_ARCH'] = 'armv7s'
438 call_scons(build_options, extra_option_str)
440 print ("*********** Build for IOS arm64 *************")
441 build_options['TARGET_ARCH'] = 'arm64'
442 call_scons(build_options, extra_option_str)
445 def build_windows(flag, extra_option_str):
446 print ("*********** Build for Windows *************")
447 os.environ["SCONSFLAGS"] = ""
449 'TARGET_OS':'windows',
450 'TARGET_ARCH':'amd64',
453 'TARGET_TRANSPORT':'IP',
460 call_scons(build_options, extra_option_str)
463 def build_msys(flag, extra_option_str):
464 print ("*********** Build for msys_nt *************")
465 os.environ["SCONSFLAGS"] = ""
467 'TARGET_OS':'msys_nt',
468 'TARGET_ARCH':'x86_64',
471 'TARGET_TRANSPORT':'IP',
478 call_scons(build_options, extra_option_str)
480 def build_simulator(flag, extra_option_str):
481 print ("*********** Build for simulator plugin *************")
486 call_scons(build_options, extra_option_str)
489 print ("*********** Unit test Start *************")
493 extra_option_str = "-c ."
494 call_scons(build_options, extra_option_str)
501 extra_option_str = ""
502 call_scons(build_options, extra_option_str)
509 call_scons(build_options, extra_option_str)
511 print ("*********** Unit test Stop *************")
513 # Main module starts here
514 if os.getenv("SCONSFLAGS", "") == "":
515 os.environ["SCONSFLAGS"] = "-Q -j " + str(multiprocessing.cpu_count())
517 arg_num = len(sys.argv)
518 script_name = sys.argv[0]
520 # May be overridden in user's shell
521 VERBOSE = os.getenv("VERBOSE", "1")
524 build_all("true", "")
525 build_all("false", "")
529 if str(sys.argv[1]) == '-c':
530 build_all("true", "-c")
531 build_all("false", "-c")
533 elif str(sys.argv[1]) == "all":
534 build_all("true", "")
535 build_all("false", "")
538 elif str(sys.argv[1]) == "linux":
539 build_linux("true", "")
540 build_linux("false", "")
542 elif str(sys.argv[1]) == "linux_unsecured":
543 build_linux_unsecured("true", "")
544 build_linux_unsecured("false", "")
545 build_linux_unsecured_with_rm("true", "")
546 build_linux_unsecured_with_rm("false", "")
548 elif str(sys.argv[1]) == "linux_secured":
549 build_linux_secured("true", "")
550 build_linux_secured("false", "")
552 elif str(sys.argv[1]) == "linux_unsecured_with_ra":
553 build_linux_unsecured_with_ra("true", "")
554 build_linux_unsecured_with_ra("false", "")
556 elif str(sys.argv[1]) == "linux_secured_with_ra":
557 build_linux_secured_with_ra("true", "")
558 build_linux_secured_with_ra("false", "")
560 elif str(sys.argv[1]) == "linux_unsecured_with_rd":
561 build_linux_unsecured_with_rd("true", "")
562 build_linux_unsecured_with_rd("false", "")
564 elif str(sys.argv[1]) == "linux_secured_with_rd":
565 build_linux_secured_with_rd("true", "")
566 build_linux_secured_with_rd("false", "")
568 elif str(sys.argv[1]) == "linux_unsecured_with_mq":
569 build_linux_unsecured_with_mq("true", "")
570 build_linux_unsecured_with_mq("false", "")
572 elif str(sys.argv[1]) == "linux_unsecured_with_tcp":
573 build_linux_unsecured_with_tcp("true", "")
574 build_linux_unsecured_with_tcp("false", "")
576 elif str(sys.argv[1]) == "linux_secured_with_tcp":
577 build_linux_secured_with_tcp("false", "")
578 build_linux_secured_with_tcp("true", "")
580 elif str(sys.argv[1]) == "linux_unsecured_with_java":
581 build_linux_unsecured_with_java("false", "")
582 build_linux_unsecured_with_java("true", "")
584 elif str(sys.argv[1]) == "linux_secured_with_java":
585 build_linux_secured_with_java("false", "")
586 build_linux_secured_with_java("true", "")
588 elif str(sys.argv[1]) == "android":
589 build_android("true", "")
590 build_android("false", "")
592 elif str(sys.argv[1]) == "android_x86":
593 build_android_x86("true", "")
594 build_android_x86("false", "")
595 build_android_x86_with_rm("true", "")
596 build_android_x86_with_rm("false", "")
598 elif str(sys.argv[1]) == "android_x86_with_ip":
599 build_android_x86_with_ip("true", "")
600 build_android_x86_with_ip("false", "")
602 elif str(sys.argv[1]) == "android_x86_with_bt":
603 build_android_x86_with_bt("true", "")
604 build_android_x86_with_bt("false", "")
606 elif str(sys.argv[1]) == "android_x86_with_ble":
607 build_android_x86_with_ble("true", "")
608 build_android_x86_with_ble("false", "")
610 elif str(sys.argv[1]) == "android_x86_with_rm_and_ip":
611 build_android_x86_with_rm_and_ip("true", "")
612 build_android_x86_with_rm_and_ip("false", "")
614 elif str(sys.argv[1]) == "android_x86_with_rm_and_bt":
615 build_android_x86_with_rm_and_bt("true", "")
616 build_android_x86_with_rm_and_bt("false", "")
618 elif str(sys.argv[1]) == "android_x86_with_rm_and_ble":
619 build_android_x86_with_rm_and_ble("true", "")
620 build_android_x86_with_rm_and_ble("false", "")
622 elif str(sys.argv[1]) == "android_armeabi":
623 build_android_armeabi("true", "")
624 build_android_armeabi("false", "")
625 build_android_armeabi_with_rm("true", "")
626 build_android_armeabi_with_rm("false", "")
628 elif str(sys.argv[1]) == "android_armeabi_with_ip":
629 build_android_armeabi_with_ip("true", "")
630 build_android_armeabi_with_ip("false", "")
632 elif str(sys.argv[1]) == "android_armeabi_with_bt":
633 build_android_armeabi_with_bt("true", "")
634 build_android_armeabi_with_bt("false", "")
636 elif str(sys.argv[1]) == "android_armeabi_with_ble":
637 build_android_armeabi_with_ble("true", "")
638 build_android_armeabi_with_ble("false", "")
640 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_ip":
641 build_android_armeabi_with_rm_and_ip("true", "")
642 build_android_armeabi_with_rm_and_ip("false", "")
644 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_bt":
645 build_android_armeabi_with_rm_and_bt("true", "")
646 build_android_armeabi_with_rm_and_bt("false", "")
648 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_ble":
649 build_android_armeabi_with_rm_and_ble("true", "")
650 build_android_armeabi_with_rm_and_ble("false", "")
652 elif str(sys.argv[1]) == "arduino":
653 build_arduino("true", "")
654 build_arduino("false", "")
656 elif str(sys.argv[1]) == "windows":
657 build_windows("true", "")
658 build_windows("false", "")
660 elif str(sys.argv[1]) == "msys":
661 build_msys("true", "")
662 build_msys("false", "")
664 elif str(sys.argv[1]) == "tizen":
665 build_tizen("true", "")
666 build_tizen("false", "")
668 elif str(sys.argv[1]) == "simulator":
669 build_simulator("true", "")
670 build_simulator("false", "")
672 elif str(sys.argv[1]) == "darwin":
673 build_darwin("true", "")
674 build_darwin("false", "")
676 elif str(sys.argv[1]) == "unit_tests":
684 print ("===================== done =====================")