summaryrefslogtreecommitdiff
path: root/auto_build.sh
blob: 806bf6a33cb0bc129596db022e0b84d104499f6b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
#! /bin/bash

# Ideally we will capture the exit code of each step and try them all before failing
# the build script.  For now, use set -e and fail the build at first failure.
set -e

function build_all()
{
	if [ $(uname -s) = "Linux" ]
        then
		build_linux_unsecured $1 $2
		build_linux_secured $1 $2
		build_linux_unsecured_with_ra $1 $2
		build_linux_secured_with_ra $1 $2
	fi

	build_android $1 $2

	build_arduino $1 $2

	build_tizen $1 $2

	if [ $(uname -s) = "Darwin" ]
	then
		build_darwin $1 $2
	fi
}

function build_linux()
{
	build_linux_unsecured $1 $2

	build_linux_secured $1 $2
}

function build_linux_unsecured()
{
	echo "*********** Build for linux ************"
	scons RELEASE=$1 $2
}

function build_linux_secured()
{
	echo "*********** Build for linux with Security *************"
	scons RELEASE=$1 SECURED=1 $2
}

function build_linux_unsecured_with_ra()
{

	echo "*********** Build for linux With Remote Access *************"
	scons RELEASE=$1 WITH_RA=1 $2
}

function build_linux_secured_with_ra()
{
	echo "*********** Build for linux With Remote Access & Security ************"
	scons RELEASE=$1 WITH_RA=1 SECURED=1 $2
}

function build_android()
{
	# Note: for android, as oic-resource uses C++11 feature stoi and to_string,
	# it requires gcc-4.9, currently only android-ndk-r10(for linux)
	# and windows android-ndk-r10(64bit target version) support these features.
	echo "*********** Build Boost for android ***********"
	# disable parallel build for android as gradle depends on scons to finish first
	export SCONSFLAGS="-Q"

	echo "*********** Build for android x86 *************"
	scons TARGET_OS=android TARGET_ARCH=x86 RELEASE=$1 TARGET_TRANSPORT=IP $2
	scons TARGET_OS=android TARGET_ARCH=x86 RELEASE=$1 TARGET_TRANSPORT=BT $2
	scons TARGET_OS=android TARGET_ARCH=x86 RELEASE=$1 TARGET_TRANSPORT=BLE $2

	echo "*********** Build for android armeabi *************"
	scons TARGET_OS=android TARGET_ARCH=armeabi RELEASE=$1 TARGET_TRANSPORT=IP $2
	scons TARGET_OS=android TARGET_ARCH=armeabi RELEASE=$1 TARGET_TRANSPORT=BT $2
	scons TARGET_OS=android TARGET_ARCH=armeabi RELEASE=$1 TARGET_TRANSPORT=BLE $2

	# enable parallel build
	export SCONSFLAGS="-Q -j 4"
}

function build_arduino()
{
	echo "*********** Build for arduino avr *************"
	scons resource TARGET_OS=arduino UPLOAD=false BOARD=mega TARGET_ARCH=avr TARGET_TRANSPORT=IP SHIELD=ETH RELEASE=$1 $2
	scons resource TARGET_OS=arduino UPLOAD=false BOARD=mega TARGET_ARCH=avr TARGET_TRANSPORT=IP SHIELD=WIFI RELEASE=$1 $2
	scons resource TARGET_OS=arduino UPLOAD=false BOARD=mega TARGET_ARCH=avr TARGET_TRANSPORT=BLE SHIELD=RBL_NRF8001 RELEASE=$1 $2

	echo "*********** Build for arduino arm *************"
	scons resource TARGET_OS=arduino UPLOAD=false BOARD=arduino_due_x TARGET_ARCH=arm TARGET_TRANSPORT=IP SHIELD=ETH RELEASE=$1 $2
	scons resource TARGET_OS=arduino UPLOAD=false BOARD=arduino_due_x TARGET_ARCH=arm TARGET_TRANSPORT=IP SHIELD=WIFI RELEASE=$1 $2
	# BLE support for the Arduino Due is currently unavailable.
}

function build_tizen()
{
	echo "*********** Build for Tizen CA lib and sample *************"
	scons -f resource/csdk/connectivity/build/tizen/SConscript TARGET_OS=tizen TARGET_TRANSPORT=IP LOGGING=true RELEASE=$1 $2

	echo "*********** Build for Tizen CA lib and sample with Security *************"
	scons -f resource/csdk/connectivity/build/tizen/SConscript TARGET_OS=tizen TARGET_TRANSPORT=IP LOGGING=true SECURED=1 RELEASE=$1 $2
}

function build_darwin() # Mac OSx and iOS
{
	echo "*********** Build for OSX *************"
	scons TARGET_OS=darwin SYS_VERSION=10.9 RELEASE=$1 $2

	echo "*********** Build for IOS i386 *************"
	scons TARGET_OS=ios TARGET_ARCH=i386 SYS_VERSION=7.0 RELEASE=$1 $2

	echo "*********** Build for IOS x86_64 *************"
	scons TARGET_OS=ios TARGET_ARCH=x86_64 SYS_VERSION=7.0 RELEASE=$1 $2

	echo "*********** Build for IOS armv7 *************"
	scons TARGET_OS=ios TARGET_ARCH=armv7 SYS_VERSION=7.0 RELEASE=$1 $2

	echo "*********** Build for IOS armv7s *************"
	scons TARGET_OS=ios TARGET_ARCH=armv7s SYS_VERSION=7.0 RELEASE=$1 $2

	echo "*********** Build for IOS arm64 *************"
	scons TARGET_OS=ios TARGET_ARCH=arm64 SYS_VERSION=7.0 RELEASE=$1 $2
}

function unit_tests()
{
	echo "*********** Unit test Start *************"
	scons resource RELEASE=false -c
	scons resource LOGGING=false RELEASE=false
	scons resource TEST=1 RELEASE=false
	echo "*********** Unit test Stop *************"
}

function  help()
{
	echo "Usage:"
        echo "  build:"
        echo "     `basename $0` <target_build>"
	echo "      Allowed values for <target_build>: all, linux_unsecured, linux_secured, linux_unsecured_with_ra, linux_secured_with_ra, android, arduino, tizen, darwin"
	echo "      Note: \"linux\" will build \"linux_unsecured\", \"linux_secured\", \"linux_unsecured_with_ra\" & \"linux_secured_with_ra\"."
	echo "      Any selection will build both debug and release versions of all available targets in the scope you've"
	echo "      selected. To choose any specific command, please use the SCons commandline directly. Please refer"
	echo "      to [IOTIVITY_REPO]/Readme.scons.txt."
        echo "  clean:"
        echo "     `basename $0` -c"
}

# Suppress "Reading ..." message and enable parallel build
export SCONSFLAGS="-Q -j 4"

if [ $# -eq 1 ]
then
	if [ $1 = '-c' ]
	then
		build_all true $1
		build_all false $1
		exit 0
	elif [ $1 = 'all' ]
	then
		build_all true
		build_all false
		unit_tests
	elif [ $1 = 'linux' ]
	then
		build_linux true
		build_linux false
	elif [ $1 = 'linux_unsecured' ]
	then
		build_linux_unsecured true
		build_linux_unsecured false
	elif [ $1 = 'linux_secured' ]
	then
		build_linux_secured true
		build_linux_secured false
	elif [ $1 = 'linux_unsecured_with_ra' ]
	then
		build_linux_unsecured_with_ra true
		build_linux_unsecured_with_ra false
	elif [ $1 = 'linux_secured_with_ra' ]
	then
		build_linux_secured_with_ra true
		build_linux_secured_with_ra false
	elif [ $1 = 'android' ]
	then
		build_android true
		build_android false
	elif [ $1 = 'arduino' ]
	then
		build_arduino true
		build_arduino false
	elif [ $1 = 'tizen' ]
	then
		build_tizen true
		build_tizen false
	elif [ $1 = 'darwin' ]
	then
		build_darwin true
		build_darwin false
	elif [ $1 = 'unit_tests' ]
	then
		unit_tests
	else
		help
		exit -1
	fi
elif [ $# -eq 0 ]
then
	build_all true
	build_all false
	unit_tests
else
	help
	exit -1
fi

echo "===================== done ====================="