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_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_simulator(flag, extra_option_str)
57 build_android(flag, extra_option_str)
58 build_arduino(flag, extra_option_str)
59 build_tizen(flag, extra_option_str)
61 if platform.system() == "Windows":
62 build_windows(flag, extra_option_str)
64 if platform.system() == "Darwin":
65 build_darwin(flag, extra_option_str)
67 def build_linux(flag, extra_option_str):
68 build_linux_unsecured(flag, extra_option_str)
69 build_linux_secured(flag, extra_option_str)
71 def build_linux_unsecured(flag, extra_option_str):
72 print ("*********** Build for linux ************")
76 call_scons(build_options, extra_option_str)
78 def build_linux_unsecured_with_tcp(flag, extra_option_str):
79 print ("*********** Build for linux with TCP ************")
83 'TARGET_TRANSPORT': 'IP',
85 call_scons(build_options, extra_option_str)
87 def build_linux_unsecured_with_rm(flag, extra_option_str):
88 print ("*********** Build for linux with RoutingManager************")
93 call_scons(build_options, extra_option_str)
95 def build_linux_secured(flag, extra_option_str):
96 print ("*********** Build for linux with Security *************")
101 call_scons(build_options, extra_option_str)
103 def build_linux_unsecured_with_ra(flag, extra_option_str):
104 print ("*********** Build for linux With Remote Access *************")
110 call_scons(build_options, extra_option_str)
112 def build_linux_secured_with_ra(flag, extra_option_str):
113 print ("*********** Build for linux With Remote Access & Security ************")
120 call_scons(build_options, extra_option_str)
122 def build_linux_unsecured_with_rd(flag, extra_option_str):
123 print ("*********** Build for linux With Resource Directory *************")
128 call_scons(build_options, extra_option_str)
130 def build_linux_secured_with_rd(flag, extra_option_str):
131 print ("*********** Build for linux With Resource Directory & Security ************")
137 call_scons(build_options, extra_option_str)
139 def build_linux_unsecured_with_mq(flag, extra_option_str):
140 print ("*********** Build for linux With Message Queue ************")
143 'WITH_MQ':'PUB,SUB,BROKER',
145 call_scons(build_options, extra_option_str)
147 def build_linux_unsecured_with_tcp(flag, extra_option_str):
148 print ("*********** Build for linux With tcp ************")
153 call_scons(build_options, extra_option_str)
155 def build_android(flag, extra_option_str):
156 # Note: for android, as oic-resource uses C++11 feature stoi and to_string,
157 # it requires gcc-4.9, currently only android-ndk-r10(for linux)
158 # and windows android-ndk-r10(64bit target version) support these features.
160 build_android_x86(flag, extra_option_str)
161 build_android_x86_with_rm(flag, extra_option_str)
162 build_android_armeabi(flag, extra_option_str)
163 build_android_armeabi_with_rm(flag, extra_option_str)
165 def build_android_x86(flag, extra_option_str):
166 """ Build Android x86 Suite """
167 build_android_x86_with_ip(flag, extra_option_str)
168 build_android_x86_with_bt(flag, extra_option_str)
169 build_android_x86_with_ble(flag, extra_option_str)
171 def build_android_x86_with_ip(flag, extra_option_str):
172 print ("*********** Build for android x86 *************")
174 'TARGET_OS':'android',
177 'TARGET_TRANSPORT':'IP',
179 call_scons(build_options, extra_option_str)
181 def build_android_x86_with_bt(flag, extra_option_str):
182 print ("*********** Build for android x86 with Bluetooth *************")
184 'TARGET_OS':'android',
187 'TARGET_TRANSPORT':'BT',
189 call_scons(build_options, extra_option_str)
191 def build_android_x86_with_ble(flag, extra_option_str):
192 print ("*********** Build for android x86 with Bluetooth Low Energy *************")
194 'TARGET_OS':'android',
197 'TARGET_TRANSPORT':'BLE',
199 call_scons(build_options, extra_option_str)
201 def build_android_x86_with_rm(flag, extra_option_str):
202 """ Build Android x86 Routing Manager Suite """
203 build_android_x86_with_rm_and_ip(flag, extra_option_str)
204 build_android_x86_with_rm_and_bt(flag, extra_option_str)
205 build_android_x86_with_rm_and_ble(flag, extra_option_str)
207 def build_android_x86_with_rm_and_ip(flag, extra_option_str):
208 print ("*********** Build for android x86 with Routing Manager *************")
210 'TARGET_OS':'android',
214 'TARGET_TRANSPORT':'IP',
216 call_scons(build_options, extra_option_str)
218 def build_android_x86_with_rm_and_bt(flag, extra_option_str):
219 print ("*********** Build for android x86 with Routing Manager and Bluetooth *************")
221 'TARGET_OS':'android',
225 'TARGET_TRANSPORT':'BT',
227 call_scons(build_options, extra_option_str)
229 def build_android_x86_with_rm_and_ble(flag, extra_option_str):
230 print ("*********** Build for android x86 with Routing Manager and Bluetooth Low Energy *************")
232 'TARGET_OS':'android',
236 'TARGET_TRANSPORT':'BLE',
238 call_scons(build_options, extra_option_str)
240 def build_android_armeabi(flag, extra_option_str):
241 """ Build Android Armeabi Suite """
242 build_android_armeabi_with_ip(flag, extra_option_str)
243 build_android_armeabi_with_bt(flag, extra_option_str)
244 build_android_armeabi_with_ble(flag, extra_option_str)
246 def build_android_armeabi_with_ip(flag, extra_option_str):
247 print ("*********** Build for android armeabi *************")
249 'TARGET_OS':'android',
250 'TARGET_ARCH':'armeabi',
252 'TARGET_TRANSPORT':'IP',
254 call_scons(build_options, extra_option_str)
256 def build_android_armeabi_with_bt(flag, extra_option_str):
257 print ("*********** Build for android armeabi with Bluetooth *************")
259 'TARGET_OS':'android',
260 'TARGET_ARCH':'armeabi',
262 'TARGET_TRANSPORT':'BT',
264 call_scons(build_options, extra_option_str)
266 def build_android_armeabi_with_ble(flag, extra_option_str):
267 print ("*********** Build for android armeabi with Bluetooth Low Energy *************")
269 'TARGET_OS':'android',
270 'TARGET_ARCH':'armeabi',
272 'TARGET_TRANSPORT':'BLE',
274 call_scons(build_options, extra_option_str)
276 def build_android_armeabi_with_rm(flag, extra_option_str):
277 """ Build Android Armeabi Routing Manager Suite """
278 build_android_armeabi_with_rm_and_ip(flag, extra_option_str)
279 build_android_armeabi_with_rm_and_bt(flag, extra_option_str)
280 build_android_armeabi_with_rm_and_ble(flag, extra_option_str)
282 def build_android_armeabi_with_rm_and_ip(flag, extra_option_str):
283 print ("*********** Build for android armeabi with Routing Manager *************")
285 'TARGET_OS':'android',
286 'TARGET_ARCH':'armeabi',
289 'TARGET_TRANSPORT':'IP',
291 call_scons(build_options, extra_option_str)
293 def build_android_armeabi_with_rm_and_bt(flag, extra_option_str):
294 print ("*********** Build for android armeabi with Routing Manager and Bluetooth *************")
296 'TARGET_OS':'android',
297 'TARGET_ARCH':'armeabi',
300 'TARGET_TRANSPORT':'BT',
302 call_scons(build_options, extra_option_str)
304 def build_android_armeabi_with_rm_and_ble(flag, extra_option_str):
305 print ("*********** Build for android armeabi with Routing Manager and Bluetooth Low Energy *************")
307 'TARGET_OS':'android',
308 'TARGET_ARCH':'armeabi',
311 'TARGET_TRANSPORT':'BLE',
313 call_scons(build_options, extra_option_str)
315 def build_arduino(flag, extra_option_str):
316 print ("*********** Build for arduino avr *************")
317 extra_option_str = "resource " + extra_option_str
319 'TARGET_OS':'arduino',
323 'TARGET_TRANSPORT':'IP',
327 call_scons(build_options, extra_option_str)
329 build_options['SHIELD'] = 'WIFI'
330 call_scons(build_options, extra_option_str)
332 build_options['TARGET_TRANSPORT'] = 'BLE'
333 build_options['SHIELD'] = 'RBL_NRF8001'
334 call_scons(build_options, extra_option_str)
336 print ("*********** Build for arduino arm *************")
337 build_options['BOARD'] = 'arduino_due_x'
338 build_options['TARGET_ARCH'] = 'arm'
339 build_options['TARGET_TRANSPORT'] = 'IP'
340 build_options['SHIELD'] = 'ETH'
341 call_scons(build_options, extra_option_str)
343 build_options['SHIELD'] = 'WIFI'
344 call_scons(build_options, extra_option_str)
346 # BLE support for the Arduino Due is currently unavailable.
348 def build_tizen(flag, extra_option_str):
349 print ("*********** Build for Tizen *************")
350 cmd_line = "/bin/sh " + os.getcwd() + "/gbsbuild.sh"
351 print ("Running : " + cmd_line)
352 subprocess.Popen([cmd_line], shell=True).wait()
354 print ("*********** Build for Tizen octbstack lib and sample *************")
355 extra_option_str = "-f resource/csdk/stack/samples/tizen/build/SConscript " + extra_option_str
358 'TARGET_TRANSPORT':'IP',
362 call_scons(build_options, extra_option_str)
364 print ("*********** Build for Tizen octbstack lib and sample with Security*************")
365 build_options['SECURED'] = 1
366 call_scons(build_options, extra_option_str)
368 print ("*********** Build for Tizen octbstack lib and sample with Routing Manager*************")
369 del build_options['SECURED']
370 build_options['ROUTING'] = 'GW'
371 call_scons(build_options, extra_option_str)
374 def build_darwin(flag, extra_option_str):
375 print ("*********** Build for OSX *************")
377 'TARGET_OS':'darwin',
378 'SYS_VERSION':'10.9',
381 call_scons(build_options, extra_option_str)
383 print ("*********** Build for IOS i386 *************")
386 'TARGET_ARCH':'i386',
390 call_scons(build_options, extra_option_str)
392 print ("*********** Build for IOS x86_64 *************")
393 build_options['TARGET_ARCH'] = 'x86_64'
394 call_scons(build_options, extra_option_str)
396 print ("*********** Build for IOS armv7 *************")
397 build_options['TARGET_ARCH'] = 'armv7'
398 call_scons(build_options, extra_option_str)
400 print ("*********** Build for IOS armv7s *************")
401 build_options['TARGET_ARCH'] = 'armv7s'
402 call_scons(build_options, extra_option_str)
404 print ("*********** Build for IOS arm64 *************")
405 build_options['TARGET_ARCH'] = 'arm64'
406 call_scons(build_options, extra_option_str)
409 def build_windows(flag, extra_option_str):
410 print ("*********** Build for Windows *************")
411 os.environ["SCONSFLAGS"] = ""
413 'TARGET_OS':'windows',
414 'TARGET_ARCH':'amd64',
417 'TARGET_TRANSPORT':'IP',
425 call_scons(build_options, extra_option_str)
428 def build_msys(flag, extra_option_str):
429 print ("*********** Build for msys_nt *************")
430 os.environ["SCONSFLAGS"] = ""
432 'TARGET_OS':'msys_nt',
433 'TARGET_ARCH':'x86_64',
436 'TARGET_TRANSPORT':'IP',
444 call_scons(build_options, extra_option_str)
446 def build_simulator(flag, extra_option_str):
447 print ("*********** Build for simulator plugin *************")
452 call_scons(build_options, extra_option_str)
455 print ("*********** Unit test Start *************")
459 extra_option_str = "resource -c"
460 call_scons(build_options, extra_option_str)
466 extra_option_str = "resource"
467 call_scons(build_options, extra_option_str)
473 extra_option_str = "resource"
474 call_scons(build_options, extra_option_str)
476 print ("*********** Unit test Stop *************")
478 # Main module starts here
479 if os.getenv("SCONSFLAGS", "") == "":
480 os.environ["SCONSFLAGS"] = "-Q -j " + str(multiprocessing.cpu_count())
482 arg_num = len(sys.argv)
483 script_name = sys.argv[0]
485 # May be overridden in user's shell
486 VERBOSE = os.getenv("VERBOSE", "1")
489 build_all("true", "")
490 build_all("false", "")
494 if str(sys.argv[1]) == '-c':
495 build_all("true", "-c")
496 build_all("false", "-c")
498 elif str(sys.argv[1]) == "all":
499 build_all("true", "")
500 build_all("false", "")
503 elif str(sys.argv[1]) == "linux":
504 build_linux("true", "")
505 build_linux("false", "")
507 elif str(sys.argv[1]) == "linux_unsecured":
508 build_linux_unsecured("true", "")
509 build_linux_unsecured("false", "")
510 build_linux_unsecured_with_rm("true", "")
511 build_linux_unsecured_with_rm("false", "")
513 elif str(sys.argv[1]) == "linux_secured":
514 build_linux_secured("true", "")
515 build_linux_secured("false", "")
517 elif str(sys.argv[1]) == "linux_unsecured_with_ra":
518 build_linux_unsecured_with_ra("true", "")
519 build_linux_unsecured_with_ra("false", "")
521 elif str(sys.argv[1]) == "linux_secured_with_ra":
522 build_linux_secured_with_ra("true", "")
523 build_linux_secured_with_ra("false", "")
525 elif str(sys.argv[1]) == "linux_unsecured_with_rd":
526 build_linux_unsecured_with_rd("true", "")
527 build_linux_unsecured_with_rd("false", "")
529 elif str(sys.argv[1]) == "linux_secured_with_rd":
530 build_linux_secured_with_rd("true", "")
531 build_linux_secured_with_rd("false", "")
533 elif str(sys.argv[1]) == "linux_unsecured_with_mq":
534 build_linux_unsecured_with_mq("true", "")
535 build_linux_unsecured_with_mq("false", "")
537 elif str(sys.argv[1]) == "linux_unsecured_with_tcp":
538 build_linux_unsecured_with_tcp("true", "")
539 build_linux_unsecured_with_tcp("false", "")
541 elif str(sys.argv[1]) == "android":
542 build_android("true", "")
543 build_android("false", "")
545 elif str(sys.argv[1]) == "android_x86":
546 build_android_x86("true", "")
547 build_android_x86("false", "")
548 build_android_x86_with_rm("true", "")
549 build_android_x86_with_rm("false", "")
551 elif str(sys.argv[1]) == "android_x86_with_ip":
552 build_android_x86_with_ip("true", "")
553 build_android_x86_with_ip("false", "")
555 elif str(sys.argv[1]) == "android_x86_with_bt":
556 build_android_x86_with_bt("true", "")
557 build_android_x86_with_bt("false", "")
559 elif str(sys.argv[1]) == "android_x86_with_ble":
560 build_android_x86_with_ble("true", "")
561 build_android_x86_with_ble("false", "")
563 elif str(sys.argv[1]) == "android_x86_with_rm_and_ip":
564 build_android_x86_with_rm_and_ip("true", "")
565 build_android_x86_with_rm_and_ip("false", "")
567 elif str(sys.argv[1]) == "android_x86_with_rm_and_bt":
568 build_android_x86_with_rm_and_bt("true", "")
569 build_android_x86_with_rm_and_bt("false", "")
571 elif str(sys.argv[1]) == "android_x86_with_rm_and_ble":
572 build_android_x86_with_rm_and_ble("true", "")
573 build_android_x86_with_rm_and_ble("false", "")
575 elif str(sys.argv[1]) == "android_armeabi":
576 build_android_armeabi("true", "")
577 build_android_armeabi("false", "")
578 build_android_armeabi_with_rm("true", "")
579 build_android_armeabi_with_rm("false", "")
581 elif str(sys.argv[1]) == "android_armeabi_with_ip":
582 build_android_armeabi_with_ip("true", "")
583 build_android_armeabi_with_ip("false", "")
585 elif str(sys.argv[1]) == "android_armeabi_with_bt":
586 build_android_armeabi_with_bt("true", "")
587 build_android_armeabi_with_bt("false", "")
589 elif str(sys.argv[1]) == "android_armeabi_with_ble":
590 build_android_armeabi_with_ble("true", "")
591 build_android_armeabi_with_ble("false", "")
593 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_ip":
594 build_android_armeabi_with_rm_and_ip("true", "")
595 build_android_armeabi_with_rm_and_ip("false", "")
597 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_bt":
598 build_android_armeabi_with_rm_and_bt("true", "")
599 build_android_armeabi_with_rm_and_bt("false", "")
601 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_ble":
602 build_android_armeabi_with_rm_and_ble("true", "")
603 build_android_armeabi_with_rm_and_ble("false", "")
605 elif str(sys.argv[1]) == "arduino":
606 build_arduino("true", "")
607 build_arduino("false", "")
609 elif str(sys.argv[1]) == "windows":
610 build_windows("true", "")
611 build_windows("false", "")
613 elif str(sys.argv[1]) == "msys":
614 build_msys("true", "")
615 build_msys("false", "")
617 elif str(sys.argv[1]) == "tizen":
618 build_tizen("true", "")
619 build_tizen("false", "")
621 elif str(sys.argv[1]) == "simulator":
622 build_simulator("true", "")
623 build_simulator("false", "")
625 elif str(sys.argv[1]) == "darwin":
626 build_darwin("true", "")
627 build_darwin("false", "")
629 elif str(sys.argv[1]) == "unit_tests":
637 print ("===================== done =====================")