Imported Upstream version 1.1.0
[platform/upstream/iotivity.git] / auto_build.sh
1 #! /bin/bash
2
3 # Ideally we will capture the exit code of each step and try them all before failing
4 # the build script.  For now, use set -e and fail the build at first failure.
5 set -e
6
7 function build_all()
8 {
9         if [ $(uname -s) = "Linux" ]
10         then
11                 build_linux_unsecured $1 $2
12                 build_linux_secured $1 $2
13                 build_linux_unsecured_with_ra $1 $2
14                 build_linux_secured_with_ra $1 $2
15                 build_linux_unsecured_with_rm $1 $2
16                 build_linux_unsecured_with_rd $1 $2
17                 build_linux_secured_with_rd $1 $2
18                 build_simulator $1 $2
19         fi
20
21         build_android $1 $2
22
23         build_arduino $1 $2
24
25         build_tizen $1 $2
26
27         if [ $(uname -s) = "Darwin" ]
28         then
29                 build_darwin $1 $2
30         fi
31 }
32
33 function build_linux()
34 {
35         build_linux_unsecured $1 $2
36
37         build_linux_secured $1 $2
38 }
39
40 function build_linux_unsecured()
41 {
42         echo "*********** Build for linux ************"
43         scons RELEASE=$1 $2
44 }
45
46 function build_linux_unsecured_with_rm()
47 {
48         echo "*********** Build for linux with RoutingManager************"
49         scons ROUTING=GW RELEASE=$1 $2
50 }
51
52 function build_linux_secured()
53 {
54         echo "*********** Build for linux with Security *************"
55         scons RELEASE=$1 SECURED=1 $2
56 }
57
58 function build_linux_unsecured_with_ra()
59 {
60
61         echo "*********** Build for linux With Remote Access *************"
62         scons RELEASE=$1 WITH_RA=1 WITH_RA_IBB=1 $2
63 }
64
65 function build_linux_secured_with_ra()
66 {
67         echo "*********** Build for linux With Remote Access & Security ************"
68         scons RELEASE=$1 WITH_RA=1 WITH_RA_IBB=1 SECURED=1 $2
69 }
70
71 function build_linux_unsecured_with_rd()
72 {
73         echo "*********** Build for linux With Resource Directory *************"
74         scons RELEASE=$1 WITH_RD=1 $2
75 }
76
77 function build_linux_secured_with_rd()
78 {
79         echo "*********** Build for linux With Resource Directory & Security ************"
80         scons RELEASE=$1 WITH_RD=1 SECURED=1 $2
81 }
82
83 function build_android()
84 {
85         # Note: for android, as oic-resource uses C++11 feature stoi and to_string,
86         # it requires gcc-4.9, currently only android-ndk-r10(for linux)
87         # and windows android-ndk-r10(64bit target version) support these features.
88
89         build_android_x86 $1 $2
90         build_android_x86_with_rm $1 $2
91         build_android_armeabi $1 $2
92         build_android_armeabi_with_rm $1 $2
93 }
94
95 function build_android_x86()
96 {
97         echo "*********** Build for android x86 *************"
98         scons TARGET_OS=android TARGET_ARCH=x86 RELEASE=$1 TARGET_TRANSPORT=IP $2
99         scons TARGET_OS=android TARGET_ARCH=x86 RELEASE=$1 TARGET_TRANSPORT=BT $2
100         scons TARGET_OS=android TARGET_ARCH=x86 RELEASE=$1 TARGET_TRANSPORT=BLE $2
101 }
102
103 function build_android_x86_with_rm()
104 {
105         echo "*********** Build for android x86 with Routing Manager *************"
106         scons TARGET_OS=android TARGET_ARCH=x86 ROUTING=GW RELEASE=$1 TARGET_TRANSPORT=IP $2
107         scons TARGET_OS=android TARGET_ARCH=x86 ROUTING=GW RELEASE=$1 TARGET_TRANSPORT=BT $2
108         scons TARGET_OS=android TARGET_ARCH=x86 ROUTING=GW RELEASE=$1 TARGET_TRANSPORT=BLE $2
109 }
110
111 function build_android_armeabi()
112 {
113         echo "*********** Build for android armeabi *************"
114         scons TARGET_OS=android TARGET_ARCH=armeabi RELEASE=$1 TARGET_TRANSPORT=IP $2
115         scons TARGET_OS=android TARGET_ARCH=armeabi RELEASE=$1 TARGET_TRANSPORT=BT $2
116         scons TARGET_OS=android TARGET_ARCH=armeabi RELEASE=$1 TARGET_TRANSPORT=BLE $2
117 }
118
119 function build_android_armeabi_with_rm()
120 {
121         echo "*********** Build for android armeabi with Routing Manager*************"
122         scons TARGET_OS=android TARGET_ARCH=armeabi ROUTING=GW RELEASE=$1 TARGET_TRANSPORT=IP $2
123         scons TARGET_OS=android TARGET_ARCH=armeabi ROUTING=GW RELEASE=$1 TARGET_TRANSPORT=BT $2
124         scons TARGET_OS=android TARGET_ARCH=armeabi ROUTING=GW RELEASE=$1 TARGET_TRANSPORT=BLE $2
125 }
126
127 function build_arduino()
128 {
129         echo "*********** Build for arduino avr *************"
130         scons resource TARGET_OS=arduino UPLOAD=false BOARD=mega TARGET_ARCH=avr TARGET_TRANSPORT=IP SHIELD=ETH RELEASE=$1 $2
131         scons resource TARGET_OS=arduino UPLOAD=false BOARD=mega TARGET_ARCH=avr TARGET_TRANSPORT=IP SHIELD=WIFI RELEASE=$1 $2
132         scons resource TARGET_OS=arduino UPLOAD=false BOARD=mega TARGET_ARCH=avr TARGET_TRANSPORT=BLE SHIELD=RBL_NRF8001 RELEASE=$1 $2
133
134         echo "*********** Build for arduino arm *************"
135         scons resource TARGET_OS=arduino UPLOAD=false BOARD=arduino_due_x TARGET_ARCH=arm TARGET_TRANSPORT=IP SHIELD=ETH RELEASE=$1 $2
136         scons resource TARGET_OS=arduino UPLOAD=false BOARD=arduino_due_x TARGET_ARCH=arm TARGET_TRANSPORT=IP SHIELD=WIFI RELEASE=$1 $2
137         # BLE support for the Arduino Due is currently unavailable.
138 }
139
140 function build_tizen()
141 {
142         echo "*********** Build for Tizen *************"
143         ./gbsbuild.sh
144
145         echo "*********** Build for Tizen octbstack lib and sample *************"
146         scons -f resource/csdk/stack/samples/tizen/build/SConscript TARGET_OS=tizen TARGET_TRANSPORT=IP LOGGING=true RELEASE=$1 $2
147
148         echo "*********** Build for Tizen octbstack lib and sample with Security*************"
149         scons -f resource/csdk/stack/samples/tizen/build/SConscript TARGET_OS=tizen TARGET_TRANSPORT=IP LOGGING=true SECURED=1 RELEASE=$1 $2
150
151         echo "*********** Build for Tizen octbstack lib and sample with Routing Manager*************"
152         scons -f resource/csdk/stack/samples/tizen/build/SConscript TARGET_OS=tizen TARGET_TRANSPORT=IP LOGGING=true ROUTING=GW RELEASE=$1 $2
153 }
154
155 function build_darwin() # Mac OSx and iOS
156 {
157         echo "*********** Build for OSX *************"
158         scons TARGET_OS=darwin SYS_VERSION=10.9 RELEASE=$1 $2
159
160         echo "*********** Build for IOS i386 *************"
161         scons TARGET_OS=ios TARGET_ARCH=i386 SYS_VERSION=7.0 RELEASE=$1 $2
162
163         echo "*********** Build for IOS x86_64 *************"
164         scons TARGET_OS=ios TARGET_ARCH=x86_64 SYS_VERSION=7.0 RELEASE=$1 $2
165
166         echo "*********** Build for IOS armv7 *************"
167         scons TARGET_OS=ios TARGET_ARCH=armv7 SYS_VERSION=7.0 RELEASE=$1 $2
168
169         echo "*********** Build for IOS armv7s *************"
170         scons TARGET_OS=ios TARGET_ARCH=armv7s SYS_VERSION=7.0 RELEASE=$1 $2
171
172         echo "*********** Build for IOS arm64 *************"
173         scons TARGET_OS=ios TARGET_ARCH=arm64 SYS_VERSION=7.0 RELEASE=$1 $2
174 }
175
176 function build_simulator()
177 {
178         echo "*********** Build for simulator plugin *************"
179         scons SIMULATOR=1 RELEASE=$1 $2
180 }
181
182 function unit_tests()
183 {
184         echo "*********** Unit test Start *************"
185         scons resource RELEASE=false -c
186         scons resource LOGGING=false RELEASE=false
187         scons resource TEST=1 RELEASE=false
188         echo "*********** Unit test Stop *************"
189 }
190
191 function  help()
192 {
193         echo "Usage:"
194         echo "  build:"
195         echo "     `basename $0` <target_build>"
196         echo "      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"
197         echo "      Note: \"linux\" will build \"linux_unsecured\", \"linux_secured\", \"linux_unsecured_with_ra\", \"linux_secured_with_ra\", \"linux_secured_with_rd\" & \"linux_unsecured_with_rd\"."
198         echo "      Any selection will build both debug and release versions of all available targets in the scope you've"
199         echo "      selected. To choose any specific command, please use the SCons commandline directly. Please refer"
200         echo "      to [IOTIVITY_REPO]/Readme.scons.txt."
201         echo "  clean:"
202         echo "     `basename $0` -c"
203 }
204
205 # Suppress "Reading ..." message and enable parallel build
206 export SCONSFLAGS="-Q -j 4"
207
208 if [ $# -eq 1 ]
209 then
210         if [ $1 = '-c' ]
211         then
212                 build_all true $1
213                 build_all false $1
214                 exit 0
215         elif [ $1 = 'all' ]
216         then
217                 build_all true
218                 build_all false
219                 unit_tests
220         elif [ $1 = 'linux' ]
221         then
222                 build_linux true
223                 build_linux false
224         elif [ $1 = 'linux_unsecured' ]
225         then
226                 build_linux_unsecured true
227                 build_linux_unsecured false
228                 build_linux_unsecured_with_rm true
229                 build_linux_unsecured_with_rm false
230         elif [ $1 = 'linux_secured' ]
231         then
232                 build_linux_secured true
233                 build_linux_secured false
234         elif [ $1 = 'linux_unsecured_with_ra' ]
235         then
236                 build_linux_unsecured_with_ra true
237                 build_linux_unsecured_with_ra false
238         elif [ $1 = 'linux_secured_with_ra' ]
239         then
240                 build_linux_secured_with_ra true
241                 build_linux_secured_with_ra false
242         elif [ $1 = 'linux_unsecured_with_rd' ]
243         then
244                 build_linux_unsecured_with_rd true
245                 build_linux_unsecured_with_rd false
246         elif [ $1 = 'linux_secured_with_rd' ]
247         then
248                 build_linux_secured_with_rd true
249                 build_linux_secured_with_rd false
250         elif [ $1 = 'android' ]
251         then
252                 build_android true
253                 build_android false
254         elif [ $1 = 'android_x86' ]
255         then
256         build_android_x86 true
257         build_android_x86 false
258                 build_android_x86_with_rm true
259                 build_android_x86_with_rm false
260         elif [ $1 = 'android_armeabi' ]
261         then
262         build_android_armeabi true
263         build_android_armeabi false
264                 build_android_armeabi_with_rm true
265                 build_android_armeabi_with_rm false
266         elif [ $1 = 'arduino' ]
267         then
268                 build_arduino true
269                 build_arduino false
270         elif [ $1 = 'tizen' ]
271         then
272                 build_tizen true
273                 build_tizen false
274         elif [ $1 = 'simulator' ]
275     then
276                 build_simulator true
277                 build_simulator false
278         elif [ $1 = 'darwin' ]
279         then
280                 build_darwin true
281                 build_darwin false
282         elif [ $1 = 'unit_tests' ]
283         then
284                 unit_tests
285         else
286                 help
287                 exit -1
288         fi
289 elif [ $# -eq 0 ]
290 then
291         build_all true
292         build_all false
293         unit_tests
294 else
295         help
296         exit -1
297 fi
298
299 echo "===================== done ====================="