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,
16 android, android_unsecured, android_secured, arduino, tizen, tizen_unsecured, tizen_secured, simulator, darwin, windows, msys
17 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\".
18 Any selection will build both debug and release versions of all available targets in the scope you've selected.
19 To choose any specific command, please use the SCons commandline directly. Please refer to [IOTIVITY_REPO]/Readme.scons.txt.
23 print (helpstr % (script, script))
26 def call_scons(build_options, extra_option_str):
28 This function formats and runs a scons command
30 build_options -- {Dictionary} build flags (keys) associated with values;
31 extra_option_str -- {String} extra options to append to scons command
33 cmd_line = "scons VERBOSE=" + VERBOSE
34 for key in build_options:
35 cmd_line += " " + key + "=" + str(build_options[key])
37 cmd_line += " " + str(extra_option_str)
40 print ("Would run : " + cmd_line)
42 print ("Running : " + cmd_line)
44 exit_code = subprocess.Popen(cmd_line, shell=True).wait()
48 def build_all(flag, extra_option_str):
49 if platform.system() == "Linux":
50 build_linux_unsecured(flag, extra_option_str)
51 build_linux_secured(flag, extra_option_str)
52 build_linux_unsecured_with_ra(flag, extra_option_str)
53 build_linux_secured_with_ra(flag, extra_option_str)
54 build_linux_unsecured_with_rm(flag, extra_option_str)
55 build_linux_unsecured_with_rd(flag, extra_option_str)
56 build_linux_secured_with_rd(flag, extra_option_str)
57 build_linux_unsecured_with_mq(flag, extra_option_str)
58 build_linux_unsecured_with_tcp(flag, extra_option_str)
59 build_linux_secured_with_tcp(flag, extra_option_str)
60 build_linux_unsecured_with_java(flag, extra_option_str)
61 build_linux_secured_with_java(flag, extra_option_str)
62 build_simulator(flag, extra_option_str)
64 build_android_unsecured(flag, extra_option_str)
65 build_android_secured(flag, extra_option_str)
66 build_arduino(flag, extra_option_str)
67 build_tizen(flag, extra_option_str)
69 if platform.system() == "Windows":
70 build_windows(flag, extra_option_str)
72 if platform.system() == "Darwin":
73 build_darwin(flag, extra_option_str)
75 def build_linux(flag, extra_option_str):
76 build_linux_unsecured(flag, extra_option_str)
77 build_linux_secured(flag, extra_option_str)
79 def build_linux_unsecured(flag, extra_option_str):
80 print ("*********** Build for linux ************")
85 call_scons(build_options, extra_option_str)
87 def build_linux_secured_with_tcp(flag, extra_option_str):
88 print ("*********** Build for linux with Secured TCP ************")
94 call_scons(build_options, extra_option_str)
96 def build_linux_unsecured_with_java(flag, extra_option_str):
97 print ("*********** Build for linux with Java support ************")
101 'TARGET_TRANSPORT': 'IP',
103 call_scons(build_options, extra_option_str)
105 def build_linux_secured_with_java(flag, extra_option_str):
106 print ("*********** Build for linux with Java support and secured ************")
110 'TARGET_TRANSPORT': 'IP',
113 call_scons(build_options, extra_option_str)
115 def build_linux_unsecured_with_tcp(flag, extra_option_str):
116 print ("*********** Build for linux with TCP ************")
120 'TARGET_TRANSPORT': 'IP',
123 call_scons(build_options, extra_option_str)
125 def build_linux_unsecured_with_rm(flag, extra_option_str):
126 print ("*********** Build for linux with RoutingManager************")
132 call_scons(build_options, extra_option_str)
134 def build_linux_secured(flag, extra_option_str):
135 print ("*********** Build for linux with Security *************")
139 call_scons(build_options, extra_option_str)
141 def build_linux_unsecured_with_ra(flag, extra_option_str):
142 print ("*********** Build for linux With Remote Access *************")
149 call_scons(build_options, extra_option_str)
151 def build_linux_secured_with_ra(flag, extra_option_str):
152 print ("*********** Build for linux With Remote Access & Security ************")
158 call_scons(build_options, extra_option_str)
160 def build_linux_unsecured_with_rd(flag, extra_option_str):
161 print ("*********** Build for linux With Resource Directory *************")
167 call_scons(build_options, extra_option_str)
169 def build_linux_secured_with_rd(flag, extra_option_str):
170 print ("*********** Build for linux With Resource Directory & Security ************")
175 call_scons(build_options, extra_option_str)
177 def build_linux_unsecured_with_mq(flag, extra_option_str):
178 print ("*********** Build for linux With Message Queue ************")
181 'WITH_MQ':'PUB,SUB,BROKER',
184 call_scons(build_options, extra_option_str)
186 def build_linux_unsecured_with_tcp(flag, extra_option_str):
187 print ("*********** Build for linux With tcp ************")
193 call_scons(build_options, extra_option_str)
195 def build_android(flag, extra_option_str):
196 # Note: for android, as oic-resource uses C++11 feature stoi and to_string,
197 # it requires gcc-4.9, currently only android-ndk-r10(for linux)
198 # and windows android-ndk-r10(64bit target version) support these features.
199 print ("*********** Build for android armeabi *************")
201 'TARGET_OS':'android',
202 'TARGET_ARCH':'armeabi',
205 call_scons(build_options, extra_option_str)
207 def build_android_secured(flag, extra_option_str):
208 build_android(flag, extra_option_str + " SECURED=1")
210 def build_android_unsecured(flag, extra_option_str):
211 build_android(flag, extra_option_str + " SECURED=0")
213 def build_android_x86(flag, extra_option_str):
214 """ Build Android x86 Suite """
215 build_android_x86_with_ip(flag, extra_option_str)
216 build_android_x86_with_bt(flag, extra_option_str)
217 build_android_x86_with_ble(flag, extra_option_str)
219 def build_android_x86_with_ip(flag, extra_option_str):
220 print ("*********** Build for android x86 *************")
222 'TARGET_OS':'android',
225 'TARGET_TRANSPORT':'IP',
227 call_scons(build_options, extra_option_str)
229 def build_android_x86_with_bt(flag, extra_option_str):
230 print ("*********** Build for android x86 with Bluetooth *************")
232 'TARGET_OS':'android',
235 'TARGET_TRANSPORT':'BT',
237 call_scons(build_options, extra_option_str)
239 def build_android_x86_with_ble(flag, extra_option_str):
240 print ("*********** Build for android x86 with Bluetooth Low Energy *************")
242 'TARGET_OS':'android',
245 'TARGET_TRANSPORT':'BLE',
247 call_scons(build_options, extra_option_str)
249 def build_android_x86_with_rm(flag, extra_option_str):
250 """ Build Android x86 Routing Manager Suite """
251 build_android_x86_with_rm_and_ip(flag, extra_option_str)
252 build_android_x86_with_rm_and_bt(flag, extra_option_str)
253 build_android_x86_with_rm_and_ble(flag, extra_option_str)
255 def build_android_x86_with_rm_and_ip(flag, extra_option_str):
256 print ("*********** Build for android x86 with Routing Manager *************")
258 'TARGET_OS':'android',
262 'TARGET_TRANSPORT':'IP',
264 call_scons(build_options, extra_option_str)
266 def build_android_x86_with_rm_and_bt(flag, extra_option_str):
267 print ("*********** Build for android x86 with Routing Manager and Bluetooth *************")
269 'TARGET_OS':'android',
273 'TARGET_TRANSPORT':'BT',
275 call_scons(build_options, extra_option_str)
277 def build_android_x86_with_rm_and_ble(flag, extra_option_str):
278 print ("*********** Build for android x86 with Routing Manager and Bluetooth Low Energy *************")
280 'TARGET_OS':'android',
284 'TARGET_TRANSPORT':'BLE',
286 call_scons(build_options, extra_option_str)
288 def build_android_armeabi(flag, extra_option_str):
289 """ Build Android Armeabi Suite """
290 build_android_armeabi_with_ip(flag, extra_option_str)
291 build_android_armeabi_with_bt(flag, extra_option_str)
292 build_android_armeabi_with_ble(flag, extra_option_str)
294 def build_android_armeabi_with_ip(flag, extra_option_str):
295 print ("*********** Build for android armeabi *************")
297 'TARGET_OS':'android',
298 'TARGET_ARCH':'armeabi',
300 'TARGET_TRANSPORT':'IP',
302 call_scons(build_options, extra_option_str)
304 def build_android_armeabi_with_bt(flag, extra_option_str):
305 print ("*********** Build for android armeabi with Bluetooth *************")
307 'TARGET_OS':'android',
308 'TARGET_ARCH':'armeabi',
310 'TARGET_TRANSPORT':'BT',
312 call_scons(build_options, extra_option_str)
314 def build_android_armeabi_with_ble(flag, extra_option_str):
315 print ("*********** Build for android armeabi with Bluetooth Low Energy *************")
317 'TARGET_OS':'android',
318 'TARGET_ARCH':'armeabi',
320 'TARGET_TRANSPORT':'BLE',
322 call_scons(build_options, extra_option_str)
324 def build_android_armeabi_with_rm(flag, extra_option_str):
325 """ Build Android Armeabi Routing Manager Suite """
326 build_android_armeabi_with_rm_and_ip(flag, extra_option_str)
327 build_android_armeabi_with_rm_and_bt(flag, extra_option_str)
328 build_android_armeabi_with_rm_and_ble(flag, extra_option_str)
330 def build_android_armeabi_with_rm_and_ip(flag, extra_option_str):
331 print ("*********** Build for android armeabi with Routing Manager *************")
333 'TARGET_OS':'android',
334 'TARGET_ARCH':'armeabi',
337 'TARGET_TRANSPORT':'IP',
339 call_scons(build_options, extra_option_str)
341 def build_android_armeabi_with_rm_and_bt(flag, extra_option_str):
342 print ("*********** Build for android armeabi with Routing Manager and Bluetooth *************")
344 'TARGET_OS':'android',
345 'TARGET_ARCH':'armeabi',
348 'TARGET_TRANSPORT':'BT',
350 call_scons(build_options, extra_option_str)
352 def build_android_armeabi_with_rm_and_ble(flag, extra_option_str):
353 print ("*********** Build for android armeabi with Routing Manager and Bluetooth Low Energy *************")
355 'TARGET_OS':'android',
356 'TARGET_ARCH':'armeabi',
359 'TARGET_TRANSPORT':'BLE',
361 call_scons(build_options, extra_option_str)
363 def build_arduino(flag, extra_option_str):
364 print ("*********** Build for arduino avr *************")
365 extra_option_str = "resource " + extra_option_str
367 'TARGET_OS':'arduino',
372 'TARGET_TRANSPORT':'IP',
376 call_scons(build_options, extra_option_str)
378 build_options['SHIELD'] = 'WIFI'
379 call_scons(build_options, extra_option_str)
381 build_options['TARGET_TRANSPORT'] = 'BLE'
382 build_options['SHIELD'] = 'RBL_NRF8001'
383 call_scons(build_options, extra_option_str)
385 print ("*********** Build for arduino arm *************")
386 build_options['BOARD'] = 'arduino_due_x'
387 build_options['TARGET_ARCH'] = 'arm'
388 build_options['TARGET_TRANSPORT'] = 'IP'
389 build_options['SHIELD'] = 'ETH'
390 call_scons(build_options, extra_option_str)
392 build_options['SHIELD'] = 'WIFI'
393 call_scons(build_options, extra_option_str)
395 # BLE support for the Arduino Due is currently unavailable.
397 def build_tizen(flag, extra_option_str):
398 print ("*********** Build for Tizen with options *************")
399 cmd_line = os.getcwd() + "/gbsbuild.sh" + " " + extra_option_str
401 print ("Would run : " + cmd_line)
403 print ("Running : " + cmd_line)
404 exit_code = subprocess.Popen([cmd_line], shell=True).wait()
408 print ("*********** Build for Tizen octbstack lib and sample *************")
409 build_extra_options = "-f resource/csdk/stack/samples/tizen/build/SConscript " + extra_option_str
412 'TARGET_TRANSPORT':'IP',
416 call_scons(build_options, build_extra_options)
418 print ("*********** Build for Tizen octbstack lib and sample with Routing Manager*************")
419 build_options['ROUTING'] = 'GW'
420 call_scons(build_options, build_extra_options)
422 print ("*********** Build for Tizen Easy-Setup sample *************")
423 build_options['ROUTING'] = 'EP'
424 build_options['ES_TARGET_ENROLLEE'] = 'tizen'
425 build_extra_options = "-f service/easy-setup/sampleapp/enrollee/tizen-sdb/EnrolleeSample/build/tizen/SConscript " + extra_option_str
426 call_scons(build_options, build_extra_options)
428 def build_tizen_secured(flag, extra_option_str):
429 build_tizen(flag, extra_option_str + " SECURED=1")
431 def build_tizen_unsecured(flag, extra_option_str):
432 build_tizen(flag, extra_option_str + " SECURED=0")
435 def build_darwin(flag, extra_option_str):
436 print ("*********** Build for OSX *************")
438 'TARGET_OS':'darwin',
439 'SYS_VERSION':'10.9',
442 call_scons(build_options, extra_option_str)
444 print ("*********** Build for IOS i386 *************")
447 'TARGET_ARCH':'i386',
451 call_scons(build_options, extra_option_str)
453 print ("*********** Build for IOS x86_64 *************")
454 build_options['TARGET_ARCH'] = 'x86_64'
455 call_scons(build_options, extra_option_str)
457 print ("*********** Build for IOS armv7 *************")
458 build_options['TARGET_ARCH'] = 'armv7'
459 call_scons(build_options, extra_option_str)
461 print ("*********** Build for IOS armv7s *************")
462 build_options['TARGET_ARCH'] = 'armv7s'
463 call_scons(build_options, extra_option_str)
465 print ("*********** Build for IOS arm64 *************")
466 build_options['TARGET_ARCH'] = 'arm64'
467 call_scons(build_options, extra_option_str)
470 def build_windows(flag, extra_option_str):
471 print ("*********** Build for Windows *************")
472 os.environ["SCONSFLAGS"] = ""
474 'TARGET_OS':'windows',
475 'TARGET_ARCH':'amd64',
478 'TARGET_TRANSPORT':'IP',
485 call_scons(build_options, extra_option_str)
488 def build_msys(flag, extra_option_str):
489 print ("*********** Build for msys_nt *************")
490 os.environ["SCONSFLAGS"] = ""
492 'TARGET_OS':'msys_nt',
493 'TARGET_ARCH':'x86_64',
496 'TARGET_TRANSPORT':'IP',
503 call_scons(build_options, extra_option_str)
505 def build_simulator(flag, extra_option_str):
506 print ("*********** Build for simulator plugin *************")
511 'TARGET_TRANSPORT':'IP',
513 call_scons(build_options, extra_option_str)
516 print ("*********** Unit test Start *************")
520 extra_option_str = "-c ."
521 call_scons(build_options, extra_option_str)
528 extra_option_str = ""
529 call_scons(build_options, extra_option_str)
536 call_scons(build_options, extra_option_str)
538 print ("*********** Unit test Stop *************")
540 # Main module starts here
541 if os.getenv("SCONSFLAGS", "") == "":
542 os.environ["SCONSFLAGS"] = "-Q -j " + str(multiprocessing.cpu_count())
544 arg_num = len(sys.argv)
545 script_name = sys.argv[0]
547 # May be overridden in user's shell
548 VERBOSE = os.getenv("VERBOSE", "1")
549 EXEC_MODE = os.getenv("EXEC_MODE", True)
550 if EXEC_MODE in ['false', 'False', '0']:
554 build_all("true", "")
555 build_all("false", "")
559 if str(sys.argv[1]) == '-c':
560 build_all("true", "-c")
561 build_all("false", "-c")
563 elif str(sys.argv[1]) == "all":
564 build_all("true", "")
565 build_all("false", "")
568 elif str(sys.argv[1]) == "linux":
569 build_linux("true", "")
570 build_linux("false", "")
572 elif str(sys.argv[1]) == "linux_unsecured":
573 build_linux_unsecured("true", "")
574 build_linux_unsecured("false", "")
575 build_linux_unsecured_with_rm("true", "")
576 build_linux_unsecured_with_rm("false", "")
578 elif str(sys.argv[1]) == "linux_secured":
579 build_linux_secured("true", "")
580 build_linux_secured("false", "")
582 elif str(sys.argv[1]) == "linux_unsecured_with_ra":
583 build_linux_unsecured_with_ra("true", "")
584 build_linux_unsecured_with_ra("false", "")
586 elif str(sys.argv[1]) == "linux_secured_with_ra":
587 build_linux_secured_with_ra("true", "")
588 build_linux_secured_with_ra("false", "")
590 elif str(sys.argv[1]) == "linux_unsecured_with_rd":
591 build_linux_unsecured_with_rd("true", "")
592 build_linux_unsecured_with_rd("false", "")
594 elif str(sys.argv[1]) == "linux_secured_with_rd":
595 build_linux_secured_with_rd("true", "")
596 build_linux_secured_with_rd("false", "")
598 elif str(sys.argv[1]) == "linux_unsecured_with_mq":
599 build_linux_unsecured_with_mq("true", "")
600 build_linux_unsecured_with_mq("false", "")
602 elif str(sys.argv[1]) == "linux_unsecured_with_tcp":
603 build_linux_unsecured_with_tcp("true", "")
604 build_linux_unsecured_with_tcp("false", "")
606 elif str(sys.argv[1]) == "linux_secured_with_tcp":
607 build_linux_secured_with_tcp("false", "")
608 build_linux_secured_with_tcp("true", "")
610 elif str(sys.argv[1]) == "linux_unsecured_with_java":
611 build_linux_unsecured_with_java("false", "")
612 build_linux_unsecured_with_java("true", "")
614 elif str(sys.argv[1]) == "linux_secured_with_java":
615 build_linux_secured_with_java("false", "")
616 build_linux_secured_with_java("true", "")
618 elif str(sys.argv[1]) == "android":
619 build_android("true", "")
620 build_android("false", "")
622 elif str(sys.argv[1]) == "android_unsecured":
623 build_android_unsecured("true", "")
624 build_android_unsecured("false", "")
626 elif str(sys.argv[1]) == "android_secured":
627 build_android_secured("true", "")
628 build_android_secured("false", "")
630 elif str(sys.argv[1]) == "android_x86":
631 build_android_x86("true", "")
632 build_android_x86("false", "")
633 build_android_x86_with_rm("true", "")
634 build_android_x86_with_rm("false", "")
636 elif str(sys.argv[1]) == "android_x86_with_ip":
637 build_android_x86_with_ip("true", "")
638 build_android_x86_with_ip("false", "")
640 elif str(sys.argv[1]) == "android_x86_with_bt":
641 build_android_x86_with_bt("true", "")
642 build_android_x86_with_bt("false", "")
644 elif str(sys.argv[1]) == "android_x86_with_ble":
645 build_android_x86_with_ble("true", "")
646 build_android_x86_with_ble("false", "")
648 elif str(sys.argv[1]) == "android_x86_with_rm_and_ip":
649 build_android_x86_with_rm_and_ip("true", "")
650 build_android_x86_with_rm_and_ip("false", "")
652 elif str(sys.argv[1]) == "android_x86_with_rm_and_bt":
653 build_android_x86_with_rm_and_bt("true", "")
654 build_android_x86_with_rm_and_bt("false", "")
656 elif str(sys.argv[1]) == "android_x86_with_rm_and_ble":
657 build_android_x86_with_rm_and_ble("true", "")
658 build_android_x86_with_rm_and_ble("false", "")
660 elif str(sys.argv[1]) == "android_armeabi":
661 build_android_armeabi("true", "")
662 build_android_armeabi("false", "")
663 build_android_armeabi_with_rm("true", "")
664 build_android_armeabi_with_rm("false", "")
666 elif str(sys.argv[1]) == "android_armeabi_with_ip":
667 build_android_armeabi_with_ip("true", "")
668 build_android_armeabi_with_ip("false", "")
670 elif str(sys.argv[1]) == "android_armeabi_with_bt":
671 build_android_armeabi_with_bt("true", "")
672 build_android_armeabi_with_bt("false", "")
674 elif str(sys.argv[1]) == "android_armeabi_with_ble":
675 build_android_armeabi_with_ble("true", "")
676 build_android_armeabi_with_ble("false", "")
678 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_ip":
679 build_android_armeabi_with_rm_and_ip("true", "")
680 build_android_armeabi_with_rm_and_ip("false", "")
682 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_bt":
683 build_android_armeabi_with_rm_and_bt("true", "")
684 build_android_armeabi_with_rm_and_bt("false", "")
686 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_ble":
687 build_android_armeabi_with_rm_and_ble("true", "")
688 build_android_armeabi_with_rm_and_ble("false", "")
690 elif str(sys.argv[1]) == "arduino":
691 build_arduino("true", "")
692 build_arduino("false", "")
694 elif str(sys.argv[1]) == "windows":
695 build_windows("true", "")
696 build_windows("false", "")
698 elif str(sys.argv[1]) == "msys":
699 build_msys("true", "")
700 build_msys("false", "")
702 elif str(sys.argv[1]) == "tizen":
703 build_tizen("true", "")
704 build_tizen("false", "")
706 elif str(sys.argv[1]) == "tizen_unsecured":
707 build_tizen_unsecured("true", "")
708 build_tizen_unsecured("false", "")
710 elif str(sys.argv[1]) == "tizen_secured":
711 build_tizen_secured("true", "")
712 build_tizen_secured("false", "")
714 elif str(sys.argv[1]) == "simulator":
715 build_simulator("true", "")
716 build_simulator("false", "")
718 elif str(sys.argv[1]) == "darwin":
719 build_darwin("true", "")
720 build_darwin("false", "")
722 elif str(sys.argv[1]) == "unit_tests":
730 print ("===================== done =====================")