#! /bin/bash
-function clean()
+# 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
+ build_linux_unsecured_with_rm $1 $2
+ build_linux_unsecured_with_rd $1 $2
+ build_linux_secured_with_rd $1 $2
+ build_simulator $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_unsecured_with_rm()
+{
+ echo "*********** Build for linux with RoutingManager************"
+ scons ROUTING=GW 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 WITH_RA_IBB=1 $2
+}
+
+function build_linux_secured_with_ra()
+{
+ echo "*********** Build for linux With Remote Access & Security ************"
+ scons RELEASE=$1 WITH_RA=1 WITH_RA_IBB=1 SECURED=1 $2
+}
+
+function build_linux_unsecured_with_rd()
{
- echo "*********** Clean build *************"
- scons -c
- rm out -rf
+ echo "*********** Build for linux With Resource Directory *************"
+ scons RELEASE=$1 WITH_RD=1 $2
}
-function build()
+function build_linux_secured_with_rd()
{
- echo "*********** Build for linux *************"
- scons
+ echo "*********** Build for linux With Resource Directory & Security ************"
+ scons RELEASE=$1 WITH_RD=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.
+ build_android_x86 $1 $2
+ build_android_x86_with_rm $1 $2
+ build_android_armeabi $1 $2
+ build_android_armeabi_with_rm $1 $2
+}
+
+function build_android_x86()
+{
echo "*********** Build for android x86 *************"
- scons BUILD_TARGET=Android CPU_ARCH=x86 ANDROID_HOME=$1 ANDROID_NDK=$2
+ 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 BUILD_TARGET=Android CPU_ARCH=armeabi ANDROID_HOME=$1 ANDROID_NDK=$2
+function build_android_x86_with_rm()
+{
+ echo "*********** Build for android x86 with Routing Manager *************"
+ scons TARGET_OS=android TARGET_ARCH=x86 ROUTING=GW RELEASE=$1 TARGET_TRANSPORT=IP $2
+ scons TARGET_OS=android TARGET_ARCH=x86 ROUTING=GW RELEASE=$1 TARGET_TRANSPORT=BT $2
+ scons TARGET_OS=android TARGET_ARCH=x86 ROUTING=GW RELEASE=$1 TARGET_TRANSPORT=BLE $2
+}
- echo "*********** Build for android armeabi-v7a *************"
- scons BUILD_TARGET=Android CPU_ARCH=armeabi-v7a ANDROID_HOME=$1 ANDROID_NDK=$2
+function build_android_armeabi()
+{
+ 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
+}
- echo "*********** Build for android armeabi-v7a-hard *************"
- scons BUILD_TARGET=Android CPU_ARCH=armeabi-v7a-hard ANDROID_HOME=$1 ANDROID_NDK=$2
+function build_android_armeabi_with_rm()
+{
+ echo "*********** Build for android armeabi with Routing Manager*************"
+ scons TARGET_OS=android TARGET_ARCH=armeabi ROUTING=GW RELEASE=$1 TARGET_TRANSPORT=IP $2
+ scons TARGET_OS=android TARGET_ARCH=armeabi ROUTING=GW RELEASE=$1 TARGET_TRANSPORT=BT $2
+ scons TARGET_OS=android TARGET_ARCH=armeabi ROUTING=GW RELEASE=$1 TARGET_TRANSPORT=BLE $2
+}
+function build_arduino()
+{
echo "*********** Build for arduino avr *************"
- scons BUILD_TARGET=Arduino CPU_ARCH=avr ARDUINO_HOME=$3
+ 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 BUILD_TARGET=Arduino CPU_ARCH=arm ARDUINO_HOME=$3
+ 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.
+}
- if [ $(uname -s) = "Darwin" ]
- then
- echo "*********** Build for OSX i386 *************"
- scons BUILD_TARGET=Darwin CPU_ARCH=i386 SYS_VERSION=10.9
+function build_tizen()
+{
+ echo "*********** Build for Tizen *************"
+ ./gbsbuild.sh
- echo "*********** Build for OSX x86_64 *************"
- scons BUILD_TARGET=Darwin CPU_ARCH=x86_64 SYS_VERSION=10.9
+ echo "*********** Build for Tizen octbstack lib and sample *************"
+ scons -f resource/csdk/stack/samples/tizen/build/SConscript TARGET_OS=tizen TARGET_TRANSPORT=IP LOGGING=true RELEASE=$1 $2
- echo "*********** Build for IOS i386 *************"
- scons BUILD_TARGET=IOS CPU_ARCH=i386 SYS_VERSION=7.0
+ echo "*********** Build for Tizen octbstack lib and sample with Security*************"
+ scons -f resource/csdk/stack/samples/tizen/build/SConscript TARGET_OS=tizen TARGET_TRANSPORT=IP LOGGING=true SECURED=1 RELEASE=$1 $2
- echo "*********** Build for IOS x86_64 *************"
- scons BUILD_TARGET=IOS CPU_ARCH=x86_64 SYS_VERSION=7.0
+ echo "*********** Build for Tizen octbstack lib and sample with Routing Manager*************"
+ scons -f resource/csdk/stack/samples/tizen/build/SConscript TARGET_OS=tizen TARGET_TRANSPORT=IP LOGGING=true ROUTING=GW RELEASE=$1 $2
+}
- echo "*********** Build for IOS armv7 *************"
- scons BUILD_TARGET=IOS CPU_ARCH=armv7 SYS_VERSION=7.0
+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 armv7s *************"
- scons BUILD_TARGET=IOS CPU_ARCH=armv7s SYS_VERSION=7.0
+ echo "*********** Build for IOS i386 *************"
+ scons TARGET_OS=ios TARGET_ARCH=i386 SYS_VERSION=7.0 RELEASE=$1 $2
- echo "*********** Build for IOS arm64 *************"
- scons BUILD_TARGET=IOS CPU_ARCH=arm64 SYS_VERSION=7.0
- fi
+ 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 build_simulator()
+{
+ echo "*********** Build for simulator plugin *************"
+ scons SIMULATOR=1 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` <path-to-android-sdk> <path-to-android-ndk> <path-to-arduino-home>"
+ echo " `basename $0` <target_build>"
+ 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"
+ 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\"."
+ 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
- clean
+ 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
+ build_linux_unsecured_with_rm true
+ build_linux_unsecured_with_rm 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 = 'linux_unsecured_with_rd' ]
+ then
+ build_linux_unsecured_with_rd true
+ build_linux_unsecured_with_rd false
+ elif [ $1 = 'linux_secured_with_rd' ]
+ then
+ build_linux_secured_with_rd true
+ build_linux_secured_with_rd false
+ elif [ $1 = 'android' ]
+ then
+ build_android true
+ build_android false
+ elif [ $1 = 'android_x86' ]
+ then
+ build_android_x86 true
+ build_android_x86 false
+ build_android_x86_with_rm true
+ build_android_x86_with_rm false
+ elif [ $1 = 'android_armeabi' ]
+ then
+ build_android_armeabi true
+ build_android_armeabi false
+ build_android_armeabi_with_rm true
+ build_android_armeabi_with_rm false
+ elif [ $1 = 'arduino' ]
+ then
+ build_arduino true
+ build_arduino false
+ elif [ $1 = 'tizen' ]
+ then
+ build_tizen true
+ build_tizen false
+ elif [ $1 = 'simulator' ]
+ then
+ build_simulator true
+ build_simulator false
+ elif [ $1 = 'darwin' ]
+ then
+ build_darwin true
+ build_darwin false
+ elif [ $1 = 'unit_tests' ]
+ then
+ unit_tests
else
help
exit -1
fi
-elif [ $# -ne 3 ]
+elif [ $# -eq 0 ]
then
+ build_all true
+ build_all false
+ unit_tests
+else
help
exit -1
fi
-
-build $1 $2 $3
echo "===================== done ====================="