EN|[CN](README_cn.md)
# Cambricon® Easy Development Kit
Cambricon® Easy Development Kit is a toolkit, which aim at helping with developing software on Cambricon MLU270/MLU220 platform.
Toolkit provides following modules:
- Device: MLU device context operation
- EasyCodec: easy decode and encode on MLU
- EasyInfer: easy inference accelerator on MLU
- EasyTrack: easy track, including feature match track and kcf track
- EasyBang: easy Bang operator

## **Cambricon Dependencies** ##
You can find the cambricon dependencies, including headers and libraries, in the neuware home (installed in `/usr/local/neuware` by default).
### Quick Start ###
This section introduces how to quickly build instructions on EasyDK and how to develop your own applications based on easydk.
#### **Required environments** ####
Before building instructions, you need to install the following software:
- cmake 2.8.7+
- GCC 4.8.5+
- GLog 0.3.4
samples & tests dependencies:
- OpenCV 2.4.9+
- GFlags 2.1.2
- FFmpeg 2.8 3.4 4.2
#### Ubuntu or Debian ####
If you are using Ubuntu or Debian, run the following commands:
```bash
sudo apt install libgoogle-glog-dev
# samples dependencies
sudo apt install libgflags-dev libopencv-dev
```
#### Centos ####
If you are using Centos, run the following commands:
```bash
sudo yum install glog
# samples dependencies
sudo yum install gflags opencv-devel
```
## Build Instructions Using CMake ##
After finished prerequiste, you can build instructions with the following steps:
1. Run the following command to create a directory for saving the output.
```bash
mkdir build # Create a directory to save the output.
```
A Makefile will be generated in the build folder.
2. Run the following command to generate a script for building instructions.
```bash
cd build
cmake ${EASYDK_DIR} # Generate native build scripts.
```
Cambricon easydk provides a CMake script ([CMakeLists.txt](CMakeLists.txt)) to build instructions. You can download CMake for free from .
`${EASYDK_DIR}` specifies the directory where easydk saves for.
| cmake option | range | default | description |
| ------------------ | --------------- | ------- | ------------------------ |
| BUILD_SAMPLES | ON / OFF | OFF | build with samples |
| BUILD_TESTS | ON / OFF | OFF | build with tests |
| WITH_CODEC | ON / OFF | ON | build codec |
| WITH_INFER | ON / OFF | ON | build infer |
| WITH_TRACKER | ON / OFF | ON | build tracker |
| WITH_BANG | ON / OFF | ON | build bang |
| WITH_INFER_SERVER | ON / OFF | ON | build infer-server |
| WITH_TURBOJPEG | ON / OFF | OFF | build with turbo-jpeg |
| ENABLE_KCF | ON / OFF | OFF | build with KCF track |
| SANITIZE_MEMORY | ON / OFF | OFF | check memory |
| SANITIZE_ADDRESS | ON / OFF | OFF | check address |
| SANITIZE_THREAD | ON / OFF | OFF | check thread |
| SANITIZE_UNDEFINED | ON / OFF | OFF | check undefined behavior |
Example:
```bash
cd build
# build without samples and tests
cmake ${EASYDK_DIR} \
-DBUILD_SAMPLES=ON \
-DBUILD_TESTS=ON
```
3. Run the following command to build instructions:
```bash
make
```