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)
39 exit_code = subprocess.Popen([cmd_line], shell=True).wait()
43 def build_all(flag, extra_option_str):
44 if platform.system() == "Linux":
45 build_linux_unsecured(flag, extra_option_str)
46 build_linux_secured(flag, extra_option_str)
47 build_linux_unsecured_with_ra(flag, extra_option_str)
48 build_linux_secured_with_ra(flag, extra_option_str)
49 build_linux_unsecured_with_rm(flag, extra_option_str)
50 build_linux_unsecured_with_rd(flag, extra_option_str)
51 build_linux_secured_with_rd(flag, extra_option_str)
52 build_linux_unsecured_with_mq(flag, extra_option_str)
53 build_linux_unsecured_with_tcp(flag, extra_option_str)
54 build_simulator(flag, extra_option_str)
56 build_android(flag, extra_option_str)
57 build_arduino(flag, extra_option_str)
58 build_tizen(flag, extra_option_str)
60 if platform.system() == "Windows":
61 build_windows(flag, extra_option_str)
63 if platform.system() == "Darwin":
64 build_darwin(flag, extra_option_str)
66 def build_linux(flag, extra_option_str):
67 build_linux_unsecured(flag, extra_option_str)
68 build_linux_secured(flag, extra_option_str)
70 def build_linux_unsecured(flag, extra_option_str):
71 print ("*********** Build for linux ************")
75 call_scons(build_options, extra_option_str)
77 def build_linux_unsecured_with_tcp(flag, extra_option_str):
78 print ("*********** Build for linux with TCP ************")
82 'TARGET_TRANSPORT': 'IP',
84 call_scons(build_options, extra_option_str)
86 def build_linux_unsecured_with_rm(flag, extra_option_str):
87 print ("*********** Build for linux with RoutingManager************")
92 call_scons(build_options, extra_option_str)
94 def build_linux_secured(flag, extra_option_str):
95 print ("*********** Build for linux with Security *************")
100 call_scons(build_options, extra_option_str)
102 def build_linux_unsecured_with_ra(flag, extra_option_str):
103 print ("*********** Build for linux With Remote Access *************")
109 call_scons(build_options, extra_option_str)
111 def build_linux_secured_with_ra(flag, extra_option_str):
112 print ("*********** Build for linux With Remote Access & Security ************")
119 call_scons(build_options, extra_option_str)
121 def build_linux_unsecured_with_rd(flag, extra_option_str):
122 print ("*********** Build for linux With Resource Directory *************")
127 call_scons(build_options, extra_option_str)
129 def build_linux_secured_with_rd(flag, extra_option_str):
130 print ("*********** Build for linux With Resource Directory & Security ************")
136 call_scons(build_options, extra_option_str)
138 def build_linux_unsecured_with_mq(flag, extra_option_str):
139 print ("*********** Build for linux With Message Queue ************")
142 'WITH_MQ':'PUB,SUB,BROKER',
144 call_scons(build_options, extra_option_str)
146 def build_linux_unsecured_with_tcp(flag, extra_option_str):
147 print ("*********** Build for linux With tcp ************")
152 call_scons(build_options, extra_option_str)
154 def build_android(flag, extra_option_str):
155 # Note: for android, as oic-resource uses C++11 feature stoi and to_string,
156 # it requires gcc-4.9, currently only android-ndk-r10(for linux)
157 # and windows android-ndk-r10(64bit target version) support these features.
159 build_android_x86(flag, extra_option_str)
160 build_android_x86_with_rm(flag, extra_option_str)
161 build_android_armeabi(flag, extra_option_str)
162 build_android_armeabi_with_rm(flag, extra_option_str)
164 def build_android_x86(flag, extra_option_str):
165 """ Build Android x86 Suite """
166 build_android_x86_with_ip(flag, extra_option_str)
167 build_android_x86_with_bt(flag, extra_option_str)
168 build_android_x86_with_ble(flag, extra_option_str)
170 def build_android_x86_with_ip(flag, extra_option_str):
171 print ("*********** Build for android x86 *************")
173 'TARGET_OS':'android',
176 'TARGET_TRANSPORT':'IP',
178 call_scons(build_options, extra_option_str)
180 def build_android_x86_with_bt(flag, extra_option_str):
181 print ("*********** Build for android x86 with Bluetooth *************")
183 'TARGET_OS':'android',
186 'TARGET_TRANSPORT':'BT',
188 call_scons(build_options, extra_option_str)
190 def build_android_x86_with_ble(flag, extra_option_str):
191 print ("*********** Build for android x86 with Bluetooth Low Energy *************")
193 'TARGET_OS':'android',
196 'TARGET_TRANSPORT':'BLE',
198 call_scons(build_options, extra_option_str)
200 def build_android_x86_with_rm(flag, extra_option_str):
201 """ Build Android x86 Routing Manager Suite """
202 build_android_x86_with_rm_and_ip(flag, extra_option_str)
203 build_android_x86_with_rm_and_bt(flag, extra_option_str)
204 build_android_x86_with_rm_and_ble(flag, extra_option_str)
206 def build_android_x86_with_rm_and_ip(flag, extra_option_str):
207 print ("*********** Build for android x86 with Routing Manager *************")
209 'TARGET_OS':'android',
213 'TARGET_TRANSPORT':'IP',
215 call_scons(build_options, extra_option_str)
217 def build_android_x86_with_rm_and_bt(flag, extra_option_str):
218 print ("*********** Build for android x86 with Routing Manager and Bluetooth *************")
220 'TARGET_OS':'android',
224 'TARGET_TRANSPORT':'BT',
226 call_scons(build_options, extra_option_str)
228 def build_android_x86_with_rm_and_ble(flag, extra_option_str):
229 print ("*********** Build for android x86 with Routing Manager and Bluetooth Low Energy *************")
231 'TARGET_OS':'android',
235 'TARGET_TRANSPORT':'BLE',
237 call_scons(build_options, extra_option_str)
239 def build_android_armeabi(flag, extra_option_str):
240 """ Build Android Armeabi Suite """
241 build_android_armeabi_with_ip(flag, extra_option_str)
242 build_android_armeabi_with_bt(flag, extra_option_str)
243 build_android_armeabi_with_ble(flag, extra_option_str)
245 def build_android_armeabi_with_ip(flag, extra_option_str):
246 print ("*********** Build for android armeabi *************")
248 'TARGET_OS':'android',
249 'TARGET_ARCH':'armeabi',
251 'TARGET_TRANSPORT':'IP',
253 call_scons(build_options, extra_option_str)
255 def build_android_armeabi_with_bt(flag, extra_option_str):
256 print ("*********** Build for android armeabi with Bluetooth *************")
258 'TARGET_OS':'android',
259 'TARGET_ARCH':'armeabi',
261 'TARGET_TRANSPORT':'BT',
263 call_scons(build_options, extra_option_str)
265 def build_android_armeabi_with_ble(flag, extra_option_str):
266 print ("*********** Build for android armeabi with Bluetooth Low Energy *************")
268 'TARGET_OS':'android',
269 'TARGET_ARCH':'armeabi',
271 'TARGET_TRANSPORT':'BLE',
273 call_scons(build_options, extra_option_str)
275 def build_android_armeabi_with_rm(flag, extra_option_str):
276 """ Build Android Armeabi Routing Manager Suite """
277 build_android_armeabi_with_rm_and_ip(flag, extra_option_str)
278 build_android_armeabi_with_rm_and_bt(flag, extra_option_str)
279 build_android_armeabi_with_rm_and_ble(flag, extra_option_str)
281 def build_android_armeabi_with_rm_and_ip(flag, extra_option_str):
282 print ("*********** Build for android armeabi with Routing Manager *************")
284 'TARGET_OS':'android',
285 'TARGET_ARCH':'armeabi',
288 'TARGET_TRANSPORT':'IP',
290 call_scons(build_options, extra_option_str)
292 def build_android_armeabi_with_rm_and_bt(flag, extra_option_str):
293 print ("*********** Build for android armeabi with Routing Manager and Bluetooth *************")
295 'TARGET_OS':'android',
296 'TARGET_ARCH':'armeabi',
299 'TARGET_TRANSPORT':'BT',
301 call_scons(build_options, extra_option_str)
303 def build_android_armeabi_with_rm_and_ble(flag, extra_option_str):
304 print ("*********** Build for android armeabi with Routing Manager and Bluetooth Low Energy *************")
306 'TARGET_OS':'android',
307 'TARGET_ARCH':'armeabi',
310 'TARGET_TRANSPORT':'BLE',
312 call_scons(build_options, extra_option_str)
314 def build_arduino(flag, extra_option_str):
315 print ("*********** Build for arduino avr *************")
316 extra_option_str = "resource " + extra_option_str
318 'TARGET_OS':'arduino',
322 'TARGET_TRANSPORT':'IP',
326 call_scons(build_options, extra_option_str)
328 build_options['SHIELD'] = 'WIFI'
329 call_scons(build_options, extra_option_str)
331 build_options['TARGET_TRANSPORT'] = 'BLE'
332 build_options['SHIELD'] = 'RBL_NRF8001'
333 call_scons(build_options, extra_option_str)
335 print ("*********** Build for arduino arm *************")
336 build_options['BOARD'] = 'arduino_due_x'
337 build_options['TARGET_ARCH'] = 'arm'
338 build_options['TARGET_TRANSPORT'] = 'IP'
339 build_options['SHIELD'] = 'ETH'
340 call_scons(build_options, extra_option_str)
342 build_options['SHIELD'] = 'WIFI'
343 call_scons(build_options, extra_option_str)
345 # BLE support for the Arduino Due is currently unavailable.
347 def build_tizen(flag, extra_option_str):
348 print ("*********** Build for Tizen *************")
349 cmd_line = "/bin/sh " + os.getcwd() + "/gbsbuild.sh"
350 print ("Running : " + cmd_line)
351 subprocess.Popen([cmd_line], shell=True).wait()
353 print ("*********** Build for Tizen octbstack lib and sample *************")
354 extra_option_str = "-f resource/csdk/stack/samples/tizen/build/SConscript " + extra_option_str
357 'TARGET_TRANSPORT':'IP',
361 call_scons(build_options, extra_option_str)
363 print ("*********** Build for Tizen octbstack lib and sample with Security*************")
364 build_options['SECURED'] = 1
365 call_scons(build_options, extra_option_str)
367 print ("*********** Build for Tizen octbstack lib and sample with Routing Manager*************")
368 del build_options['SECURED']
369 build_options['ROUTING'] = 'GW'
370 call_scons(build_options, extra_option_str)
373 def build_darwin(flag, extra_option_str):
374 print ("*********** Build for OSX *************")
376 'TARGET_OS':'darwin',
377 'SYS_VERSION':'10.9',
380 call_scons(build_options, extra_option_str)
382 print ("*********** Build for IOS i386 *************")
385 'TARGET_ARCH':'i386',
389 call_scons(build_options, extra_option_str)
391 print ("*********** Build for IOS x86_64 *************")
392 build_options['TARGET_ARCH'] = 'x86_64'
393 call_scons(build_options, extra_option_str)
395 print ("*********** Build for IOS armv7 *************")
396 build_options['TARGET_ARCH'] = 'armv7'
397 call_scons(build_options, extra_option_str)
399 print ("*********** Build for IOS armv7s *************")
400 build_options['TARGET_ARCH'] = 'armv7s'
401 call_scons(build_options, extra_option_str)
403 print ("*********** Build for IOS arm64 *************")
404 build_options['TARGET_ARCH'] = 'arm64'
405 call_scons(build_options, extra_option_str)
408 def build_windows(flag, extra_option_str):
409 print ("*********** Build for Windows *************")
410 os.environ["SCONSFLAGS"] = ""
412 'TARGET_OS':'windows',
413 'TARGET_ARCH':'amd64',
416 'TARGET_TRANSPORT':'IP',
424 call_scons(build_options, extra_option_str)
427 def build_msys(flag, extra_option_str):
428 print ("*********** Build for msys_nt *************")
429 os.environ["SCONSFLAGS"] = ""
431 'TARGET_OS':'msys_nt',
432 'TARGET_ARCH':'x86_64',
435 'TARGET_TRANSPORT':'IP',
443 call_scons(build_options, extra_option_str)
445 def build_simulator(flag, extra_option_str):
446 print ("*********** Build for simulator plugin *************")
451 call_scons(build_options, extra_option_str)
454 print ("*********** Unit test Start *************")
458 extra_option_str = "resource -c"
459 call_scons(build_options, extra_option_str)
465 extra_option_str = "resource"
466 call_scons(build_options, extra_option_str)
472 extra_option_str = "resource"
473 call_scons(build_options, extra_option_str)
475 print ("*********** Unit test Stop *************")
477 # Main module starts here
478 if os.getenv("SCONSFLAGS", "") == "":
479 os.environ["SCONSFLAGS"] = "-Q -j " + str(multiprocessing.cpu_count())
481 arg_num = len(sys.argv)
482 script_name = sys.argv[0]
484 # May be overridden in user's shell
485 VERBOSE = os.getenv("VERBOSE", "1")
488 build_all("true", "")
489 build_all("false", "")
493 if str(sys.argv[1]) == '-c':
494 build_all("true", "-c")
495 build_all("false", "-c")
497 elif str(sys.argv[1]) == "all":
498 build_all("true", "")
499 build_all("false", "")
502 elif str(sys.argv[1]) == "linux":
503 build_linux("true", "")
504 build_linux("false", "")
506 elif str(sys.argv[1]) == "linux_unsecured":
507 build_linux_unsecured("true", "")
508 build_linux_unsecured("false", "")
509 build_linux_unsecured_with_rm("true", "")
510 build_linux_unsecured_with_rm("false", "")
512 elif str(sys.argv[1]) == "linux_secured":
513 build_linux_secured("true", "")
514 build_linux_secured("false", "")
516 elif str(sys.argv[1]) == "linux_unsecured_with_ra":
517 build_linux_unsecured_with_ra("true", "")
518 build_linux_unsecured_with_ra("false", "")
520 elif str(sys.argv[1]) == "linux_secured_with_ra":
521 build_linux_secured_with_ra("true", "")
522 build_linux_secured_with_ra("false", "")
524 elif str(sys.argv[1]) == "linux_unsecured_with_rd":
525 build_linux_unsecured_with_rd("true", "")
526 build_linux_unsecured_with_rd("false", "")
528 elif str(sys.argv[1]) == "linux_secured_with_rd":
529 build_linux_secured_with_rd("true", "")
530 build_linux_secured_with_rd("false", "")
532 elif str(sys.argv[1]) == "linux_unsecured_with_mq":
533 build_linux_unsecured_with_mq("true", "")
534 build_linux_unsecured_with_mq("false", "")
536 elif str(sys.argv[1]) == "linux_unsecured_with_tcp":
537 build_linux_unsecured_with_tcp("true", "")
538 build_linux_unsecured_with_tcp("false", "")
540 elif str(sys.argv[1]) == "android":
541 build_android("true", "")
542 build_android("false", "")
544 elif str(sys.argv[1]) == "android_x86":
545 build_android_x86("true", "")
546 build_android_x86("false", "")
547 build_android_x86_with_rm("true", "")
548 build_android_x86_with_rm("false", "")
550 elif str(sys.argv[1]) == "android_x86_with_ip":
551 build_android_x86_with_ip("true", "")
552 build_android_x86_with_ip("false", "")
554 elif str(sys.argv[1]) == "android_x86_with_bt":
555 build_android_x86_with_bt("true", "")
556 build_android_x86_with_bt("false", "")
558 elif str(sys.argv[1]) == "android_x86_with_ble":
559 build_android_x86_with_ble("true", "")
560 build_android_x86_with_ble("false", "")
562 elif str(sys.argv[1]) == "android_x86_with_rm_and_ip":
563 build_android_x86_with_rm_and_ip("true", "")
564 build_android_x86_with_rm_and_ip("false", "")
566 elif str(sys.argv[1]) == "android_x86_with_rm_and_bt":
567 build_android_x86_with_rm_and_bt("true", "")
568 build_android_x86_with_rm_and_bt("false", "")
570 elif str(sys.argv[1]) == "android_x86_with_rm_and_ble":
571 build_android_x86_with_rm_and_ble("true", "")
572 build_android_x86_with_rm_and_ble("false", "")
574 elif str(sys.argv[1]) == "android_armeabi":
575 build_android_armeabi("true", "")
576 build_android_armeabi("false", "")
577 build_android_armeabi_with_rm("true", "")
578 build_android_armeabi_with_rm("false", "")
580 elif str(sys.argv[1]) == "android_armeabi_with_ip":
581 build_android_armeabi_with_ip("true", "")
582 build_android_armeabi_with_ip("false", "")
584 elif str(sys.argv[1]) == "android_armeabi_with_bt":
585 build_android_armeabi_with_bt("true", "")
586 build_android_armeabi_with_bt("false", "")
588 elif str(sys.argv[1]) == "android_armeabi_with_ble":
589 build_android_armeabi_with_ble("true", "")
590 build_android_armeabi_with_ble("false", "")
592 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_ip":
593 build_android_armeabi_with_rm_and_ip("true", "")
594 build_android_armeabi_with_rm_and_ip("false", "")
596 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_bt":
597 build_android_armeabi_with_rm_and_bt("true", "")
598 build_android_armeabi_with_rm_and_bt("false", "")
600 elif str(sys.argv[1]) == "android_armeabi_with_rm_and_ble":
601 build_android_armeabi_with_rm_and_ble("true", "")
602 build_android_armeabi_with_rm_and_ble("false", "")
604 elif str(sys.argv[1]) == "arduino":
605 build_arduino("true", "")
606 build_arduino("false", "")
608 elif str(sys.argv[1]) == "windows":
609 build_windows("true", "")
610 build_windows("false", "")
612 elif str(sys.argv[1]) == "msys":
613 build_msys("true", "")
614 build_msys("false", "")
616 elif str(sys.argv[1]) == "tizen":
617 build_tizen("true", "")
618 build_tizen("false", "")
620 elif str(sys.argv[1]) == "simulator":
621 build_simulator("true", "")
622 build_simulator("false", "")
624 elif str(sys.argv[1]) == "darwin":
625 build_darwin("true", "")
626 build_darwin("false", "")
628 elif str(sys.argv[1]) == "unit_tests":
636 print ("===================== done =====================")