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 exit_code = subprocess.Popen([cmd_line], shell=True).wait()
393 print ("*********** Build for Tizen octbstack lib and sample with security *************")
394 build_extra_options = "-f resource/csdk/stack/samples/tizen/build/SConscript " + extra_option_str
397 'TARGET_TRANSPORT':'IP',
401 call_scons(build_options, build_extra_options)
403 print ("*********** Build for Tizen octbstack lib and sample *************")
404 build_options['SECURED'] = 0
405 call_scons(build_options, build_extra_options)
407 print ("*********** Build for Tizen octbstack lib and sample with Routing Manager*************")
408 build_options['ROUTING'] = 'GW'
409 call_scons(build_options, build_extra_options)
411 print ("*********** Build for Tizen Easy-Setup sample *************")
412 build_options['ROUTING'] = 'EP'
413 build_options['ES_TARGET_ENROLLEE'] = 'tizen'
414 build_extra_options = "-f service/easy-setup/sampleapp/enrollee/tizen-sdb/EnrolleeSample/build/tizen/SConscript " + extra_option_str
415 call_scons(build_options, build_extra_options)
418 def build_darwin(flag, extra_option_str):
419 print ("*********** Build for OSX *************")
421 'TARGET_OS':'darwin',
422 'SYS_VERSION':'10.9',
425 call_scons(build_options, extra_option_str)
427 print ("*********** Build for IOS i386 *************")
430 'TARGET_ARCH':'i386',
434 call_scons(build_options, extra_option_str)
436 print ("*********** Build for IOS x86_64 *************")
437 build_options['TARGET_ARCH'] = 'x86_64'
438 call_scons(build_options, extra_option_str)
440 print ("*********** Build for IOS armv7 *************")
441 build_options['TARGET_ARCH'] = 'armv7'
442 call_scons(build_options, extra_option_str)
444 print ("*********** Build for IOS armv7s *************")
445 build_options['TARGET_ARCH'] = 'armv7s'
446 call_scons(build_options, extra_option_str)
448 print ("*********** Build for IOS arm64 *************")
449 build_options['TARGET_ARCH'] = 'arm64'
450 call_scons(build_options, extra_option_str)
453 def build_windows(flag, extra_option_str):
454 print ("*********** Build for Windows *************")
455 os.environ["SCONSFLAGS"] = ""
457 'TARGET_OS':'windows',
458 'TARGET_ARCH':'amd64',
461 'TARGET_TRANSPORT':'IP',
468 call_scons(build_options, extra_option_str)
471 def build_msys(flag, extra_option_str):
472 print ("*********** Build for msys_nt *************")
473 os.environ["SCONSFLAGS"] = ""
475 'TARGET_OS':'msys_nt',
476 'TARGET_ARCH':'x86_64',
479 'TARGET_TRANSPORT':'IP',
486 call_scons(build_options, extra_option_str)
488 def build_simulator(flag, extra_option_str):
489 print ("*********** Build for simulator plugin *************")
494 call_scons(build_options, extra_option_str)
497 print ("*********** Unit test Start *************")
501 extra_option_str = "-c ."
502 call_scons(build_options, extra_option_str)
509 extra_option_str = ""
510 call_scons(build_options, extra_option_str)
517 call_scons(build_options, extra_option_str)
519 print ("*********** Unit test Stop *************")
521 # Main module starts here
522 if os.getenv("SCONSFLAGS", "") == "":
523 os.environ["SCONSFLAGS"] = "-Q -j " + str(multiprocessing.cpu_count())
525 arg_num = len(sys.argv)
526 script_name = sys.argv[0]
528 # May be overridden in user's shell
529 VERBOSE = os.getenv("VERBOSE", "1")
532 build_all("true", "")
533 build_all("false", "")
537 if str(sys.argv[1]) == '-c':
538 build_all("true", "-c")
539 build_all("false", "-c")
541 elif str(sys.argv[1]) == "all":
542 build_all("true", "")
543 build_all("false", "")
546 elif str(sys.argv[1]) == "linux":
547 build_linux("true", "")
548 build_linux("false", "")
550 elif str(sys.argv[1]) == "linux_unsecured":
551 build_linux_unsecured("true", "")
552 build_linux_unsecured("false", "")
553 build_linux_unsecured_with_rm("true", "")
554 build_linux_unsecured_with_rm("false", "")
556 elif str(sys.argv[1]) == "linux_secured":
557 build_linux_secured("true", "")
558 build_linux_secured("false", "")
560 elif str(sys.argv[1]) == "linux_unsecured_with_ra":
561 build_linux_unsecured_with_ra("true", "")
562 build_linux_unsecured_with_ra("false", "")
564 elif str(sys.argv[1]) == "linux_secured_with_ra":
565 build_linux_secured_with_ra("true", "")
566 build_linux_secured_with_ra("false", "")
568 elif str(sys.argv[1]) == "linux_unsecured_with_rd":
569 build_linux_unsecured_with_rd("true", "")
570 build_linux_unsecured_with_rd("false", "")
572 elif str(sys.argv[1]) == "linux_secured_with_rd":
573 build_linux_secured_with_rd("true", "")
574 build_linux_secured_with_rd("false", "")
576 elif str(sys.argv[1]) == "linux_unsecured_with_mq":
577 build_linux_unsecured_with_mq("true", "")
578 build_linux_unsecured_with_mq("false", "")
580 elif str(sys.argv[1]) == "linux_unsecured_with_tcp":
581 build_linux_unsecured_with_tcp("true", "")
582 build_linux_unsecured_with_tcp("false", "")
584 elif str(sys.argv[1]) == "linux_secured_with_tcp":
585 build_linux_secured_with_tcp("false", "")
586 build_linux_secured_with_tcp("true", "")
588 elif str(sys.argv[1]) == "linux_unsecured_with_java":
589 build_linux_unsecured_with_java("false", "")
590 build_linux_unsecured_with_java("true", "")
592 elif str(sys.argv[1]) == "linux_secured_with_java":
593 build_linux_secured_with_java("false", "")
594 build_linux_secured_with_java("true", "")
596 elif str(sys.argv[1]) == "android":
597 build_android("true", "")
598 build_android("false", "")
600 elif str(sys.argv[1]) == "android_x86":
601 build_android_x86("true", "")
602 build_android_x86("false", "")
603 build_android_x86_with_rm("true", "")
604 build_android_x86_with_rm("false", "")
606 elif str(sys.argv[1]) == "android_x86_with_ip":
607 build_android_x86_with_ip("true", "")
608 build_android_x86_with_ip("false", "")
610 elif str(sys.argv[1]) == "android_x86_with_bt":
611 build_android_x86_with_bt("true", "")
612 build_android_x86_with_bt("false", "")
614 elif str(sys.argv[1]) == "android_x86_with_ble":
615 build_android_x86_with_ble("true", "")
616 build_android_x86_with_ble("false", "")
618 elif str(sys.argv[1]) == "android_x86_with_rm_and_ip":
619 build_android_x86_with_rm_and_ip("true", "")
620 build_android_x86_with_rm_and_ip("false", "")
622 elif str(sys.argv[1]) == "android_x86_with_rm_and_bt":
623 build_android_x86_with_rm_and_bt("true", "")
624 build_android_x86_with_rm_and_bt("false", "")
626 elif str(sys.argv[1]) == "android_x86_with_rm_and_ble":
627 build_android_x86_with_rm_and_ble("true", "")
628 build_android_x86_with_rm_and_ble("false", "")
630 elif str(sys.argv[1]) == "android_armeabi":
631 build_android_armeabi("true", "")
632 build_android_armeabi("false", "")
633 build_android_armeabi_with_rm("true", "")
634 build_android_armeabi_with_rm("false", "")
636 elif str(sys.argv[1]) == "android_armeabi_with_ip":
637 build_android_armeabi_with_ip("true", "")
638 build_android_armeabi_with_ip("false", "")
640 elif str(sys.argv[1]) == "android_armeabi_with_bt":
641 build_android_armeabi_with_bt("true", "")
642 build_android_armeabi_with_bt("false", "")
644 elif str(sys.argv[1]) == "android_armeabi_with_ble":
645 build_android_armeabi_with_ble("true", "")
646 build_android_armeabi_with_ble("false", "")
648 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_ip":
649 build_android_armeabi_with_rm_and_ip("true", "")
650 build_android_armeabi_with_rm_and_ip("false", "")
652 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_bt":
653 build_android_armeabi_with_rm_and_bt("true", "")
654 build_android_armeabi_with_rm_and_bt("false", "")
656 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_ble":
657 build_android_armeabi_with_rm_and_ble("true", "")
658 build_android_armeabi_with_rm_and_ble("false", "")
660 elif str(sys.argv[1]) == "arduino":
661 build_arduino("true", "")
662 build_arduino("false", "")
664 elif str(sys.argv[1]) == "windows":
665 build_windows("true", "")
666 build_windows("false", "")
668 elif str(sys.argv[1]) == "msys":
669 build_msys("true", "")
670 build_msys("false", "")
672 elif str(sys.argv[1]) == "tizen":
673 build_tizen("true", "")
674 build_tizen("false", "")
676 elif str(sys.argv[1]) == "simulator":
677 build_simulator("true", "")
678 build_simulator("false", "")
680 elif str(sys.argv[1]) == "darwin":
681 build_darwin("true", "")
682 build_darwin("false", "")
684 elif str(sys.argv[1]) == "unit_tests":
692 print ("===================== done =====================")