command in this directory)
Install external libraries:
- $ sudo apt-get install libboost-dev libboost-program-options-dev libexpat1-dev libboost-thread-dev
+ $ sudo apt-get install libboost-dev libboost-program-options-dev libexpat1-dev libboost-thread-dev uuid-dev libssl-dev libtool
Build release binaries:
$ scons
-(Note: C++ sdk requires cereal. Please follow the instruction in the build
-message to install cereal)
+(Note: C sdk requires tinycbor. Please follow the instruction in the build
+message to install tinycbor)
Build debug binaries:
$scons RELEASE=false
The output of the build is in:
<top directory of the project>/out/<target_os>/<target_arch>/<build_type>/
e.g.
- oic-resource/out/android/armeabi-v7a/release/.
+ iotivity/out/android/armeabi-v7a/release/.
This document takes 'iotivity' project as example, the way to build other
projects is almost the same.
$ scons [options] -h
Note: If no value is specified for an option, the default value will be used.
-The change of options value may impact the output.
+The change of options value may impact the help information and the behavior
+of the building.
+
+Generally, it's required to specify the target OS and target ARCH, that's to say
+tell Scons which OS and which ARCH you'd like build this project for. By default,
+the target OS and ARCH is the same as the host.
+
+Some more options may be required, please care the 'error' notification when build.
+For help about how to set an option, please run:
+ $ scons TARGET_OS=xxx TARGET_ARCH=yyy [XXX=zzz ...] -h
=== Prerequites ===
Android NDK: http://developer.android.com/tools/sdk/ndk/index.html
Android SDK: http://developer.android.com/sdk/index.html
(Note: as in some IoTivity projects, C++11 features are used, recommend Android
- NDK >= r10, according to our test result r10c is the best one currently)
+ NDK >= r10)
Arduino:
To build for Arduino, Arduino IDE is required.
Arduino IDE: http://arduino.cc/en/Main/Software
- (Note: recommend install Arduino IDE >=1.5.7)
+ (Note: recommend install Arduino IDE >=1.5.8)
Arduino builds are dependent on latest Time library. Download it from here:
http://www.pjrc.com/teensy/td_libs_Time.html
so you don't need to add it in command line each time. The build script will
guide you to do that.)
-=== Build IoTivity project on Linux(Ubuntu) ===
+Tizen:
+To build for tizen platform tinycbor library is needed.
+Please download tinycbor if it is not present in extlibs/tinycbor folder
+by doing the following:
+ $ git clone https://github.com/01org/tinycbor.git extlibs/tinycbor/tinycbor
-Generally, it's required to specify the target OS and target ARCH, that's to say
-tell Scons which OS and which ARCH you'd like build this project for. By default,
-the target OS and ARCH is the same as the host.
-Some more options may be required, please care the 'error' notification when build.
-For help about how to set an option, please run:
- $ scons TARGET_OS=xxx TARGET_ARCH=yyy [XXX=zzz ...] -h
+* 3. External libraries
+IoTivity project depends on some external libraries, such as boost, expat ...
+During building, the existence of external library will be checked, if it doesn't
+exist, the build script will try to download, unpack and build the library or
+notify user to install it.
+
+Downloading and unpacking may fail due to network problem or required unpacking
+tool isn't installed. An message will be displayed, please follow the message
+to skip it.
+
+
+=== Build IoTivity project on Linux(Ubuntu) ===
1. Build IoTivity project for Linux
$ cd <top directory of the project>
- $ sudo apt-get install libboost-dev libboost-program-options-dev libexpat1-dev libboost-thread-dev
+ $ sudo apt-get install libboost-dev libexpat1-dev libboost-thread-dev libssl-dev libtool
$ scons
2. Build IoTivity project for Android
(xxx can be x86, armeabi, armeabi-v7a, armeabi-v7a-hard. To see all of its
allowed value, please execute command 'scons TARGET_OS=android -Q -h')
-Note: Currently as x86_64/arm64_v8a external library binaries aren't provided,
-you may meet link problem if build executable binary which depends on external
-library for x86_64/arm64_v8a.
-
3. Build IoTivity project for Arduino
$ cd <top directory of the project>
- $ scons TARGET_OS=arduino TARGET_ARCH=xxx BOARD=yyy
-(xxx can be avr, arm; yyy is the name of the board, to get its allowed value
-run: scons TARGET_OS=arduino TARGET_ARCH=xxx -h. You may see a option 'CPU' in
-the output of above command line, that's due to some boards have different
-processors, to specify the processor, add 'CPU=zzz' in the command line. If no
-'CPU' option exists, that means the board only support one kind of processor,
-it's unnecessary to specify it)
+ $ sudo apt-get install dos2unix
+ $ scons TARGET_OS=arduino TARGET_ARCH=xxx BOARD=yyy SHIELD=zzz
+(xxx can be avr, arm; yyy is the name of the board, zzz is the shield type, to
+get allowed values run: scons TARGET_OS=arduino TARGET_ARCH=xxx SHIELD=zzz -h.
+You may see a option 'CPU' in the output of above command line, that's due to
+some boards have different processors, to specify the processor, add 'CPU=zzz'
+in the command line. If no 'CPU' option exists, that means the board only
+support one kind of processor, it's unnecessary to specify it)
4. Build Iotivity project for Tizen
$ cd <top directory of the project>
- $ gbs build -A xxx --packaging-dir tools/tizen/
-(xxx can be i586 or armv7l, we provide the spec file required by gbs tool at
-toools/tizen directory. gbs is default build tool for Tizen platfrom, we can
-refer the following wiki to setup Tizen development environment:
+ $ sh gbsbuild.sh
+(we provide the spec file required by gbs tool at toools/tizen directory.
+gbs is default build tool for Tizen platfrom, we can refer the following
+wiki to setup Tizen development environment:
https://source.tizen.org/documentation/developer-guide/getting-started-guide)
-=== Build IoTivity project on Windows ===
-
-1. Build IoTivity project for Android(It's the same as on Ubuntu)
- $ cd <top directory of the project>
- $ scons TARGET_OS=android TARGET_ARCH=xxx
-(xxx can be x86, armeabi, armeabi-v7a, armeabi-v7a-hard ...)
-
-2. Build IoTivity project for Arduino(It's the same as on Ubuntu)
- $ cd <top directory of the project>
- $ scons TARGET_OS=arduino TARGET_ARCH=xxx BOARD=yyy
-(xxx can be avr, arm; yyy is the name of the board, to get its allowed value
-run: scons TARGET_OS=arduino TARGET_ARCH=xxx -h. You may see a option 'CPU' in
-the output of above command line, that's due to some boards have different
-processor, to specify the processor, add 'CPU=zzz' in the command line. If no
-'CPU' option exists, that means the board only support one kind of processor,
-it's unnecessary to specify it)
-
-
Note: Currently most IoTivity project doesn't support Windows, so you can't set
TARGET_OS to 'windows' except the project support Windows.
at once. Following is the usage:
To build:
- $ auto_build.sh <path-to-android-ndk> <path-to-arduino-home>
+ $ auto_build.sh <path-to-android-ndk>
To clean:
$ auto_build.sh -c
-
-2) For Arduino build, the Time library should >=1.3. The old can only be built
-with Arduino IDE 1.0.x