# AFB Helpers library

You should find useful utilities to integrate in your bindings development.

This library is the successor of the old git [afb-helpers-submodule](https://gerrit.automotivelinux.org/gerrit/gitweb?p=apps%2Fapp-afb-helpers-submodule.git;a=summary)
now available as a separated library.

Please refer to the documentation in the `docs` folder for further informations.

## Installation

The afb-helpers library is integrated by default in the AGL SDK since the Guppy
version (>=7) and is also available as a package for the AGL supported linux
distributions.

You could find the SDK build from Yocto which embed the afb-helpers library
here:

* For the [releases](https://download.automotivelinux.org/AGL/release/) >= Guppy
 in the latest machine's deploy directory. (e.g for Guppy in
 `latest/<yourmachine>/deploy/sdk` directory)
* For the [master](https://download.automotivelinux.org/AGL/snapshots/master/)
 development branch, in the latest machine's deploy directory. (e.g in
 `latest/<yourmachine>/deploy/sdk` directory)

To install the native package please refer to [this chapter](../host-configuration/docs/1_Prerequisites.md)
in the AGL documentation to install the AGL repository for your distribution.

Then use your package manager to install the library.

### OpenSuse

```bash
sudo zypper ref
sudo zypper install agl-libafb-helpers-devel
```

### Fedora

```bash
sudo dnf ref
sudo dnf install agl-libafb-helpers-devel
```

### Ubuntu/Debian

```bash
sudo apt-get update
sudo apt-get install agl-libafb-helpers-dev
```

## (Optionnal) Remove the git submodule version

If you already use the afb-helpers component but using the submodule version
then you have to get rid of it to be sure to link and use the library version.
To do so, you have to do the following:

* Deinitialize the submodule using `git`

```bash
# This example assumes that the git submodule is named app-afb-helpers-submodule
# and is located at your root project repository.
git submodule deinit app-afb-helpers-submodule
```

* Remove the submodule relatives lines from the `.gitmodules` file

```bash
vim .gitmodules
```

* Remove the `afb-helpers` target link from any CMake target you specified.
 Those lines look like:

```bash
TARGET_LINK_LIBRARIES(${TARGET_NAME}
    afb-helpers # REMOVE THIS LINE
    ${link_libraries}
    )
```

## Add the libafb-helpers as a static library to your binding

In your `config.cmake` file, add a dependency to the afb-helpers library, i.e:

```cmake
set(PKG_REQUIRED_LIST
	json-c
	afb-daemon
	afb-helpers --> this is the afb-helpers library dependency name.
)
```

Or you can also use the [FIND_PACKAGE](https://cmake.org/cmake/help/v3.6/command/find_package.html?highlight=find_package)
CMake command to add it if you don't use the [cmake-apps-module](../cmakeafbtemplates/0_Abstract.html)