diff options
Diffstat (limited to 'docs/dev_guide/6-autobuild.md')
-rwxr-xr-x | docs/dev_guide/6-autobuild.md | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/docs/dev_guide/6-autobuild.md b/docs/dev_guide/6-autobuild.md new file mode 100755 index 0000000..6977e09 --- /dev/null +++ b/docs/dev_guide/6-autobuild.md @@ -0,0 +1,130 @@ +# Autobuild script + +The Applications based on AGL framework should have a full packaging solution, +independently of yocto workflow. + +Unfortunately the build part of the Applications is only in documentation or in +yocto recipes. + +The Applications build with AGL framework must be automated without any yocto +recipes. + +A script named **autobuild** is used to control applications build operations. +The bbclass aglwgt.bbclass will call the **autobuild** script for all operations +and is located at the top level of the application repository. + +This script could be written in one of the following languages: + +* Makefile +* Bash +* Python + +The script will be executed directly after a chmod() on it (this implies that the caller should make the script executable before calling it: caller could be aglwgt.bbclass, a jenkins job, a 'real' developer ...) +An appropriate shebang is required to make the script callable directly: + +* '#!/usr/bin/make -f' for Makefile format, +* '#!/usr/bin/bash' for Bash +* etc. + +The calling convention is close to the one from make, in particular to pass arguments through env variables. This is also easy for bash, as a simple eval on arguments will set environment variables correctly. +The generic call has the following format: + +```bash +autobuild/agl/autobuild <command> [ARG1="value1" [ARG2="value2" ... ]] +``` + +autobuild can be invoked from any directory and all relative paths are +considered to be relative to the location of autobuild. + +For makefile scripts, this is the usual behaviour. + +For bash scripts, running a 'cd $(dirname $0)' at the beginning is mandatory. + +At build time, the following calls must be made in the following order: + +```bash +autobuild/agl/autobuild configure CONFIGURE_ARGS="..." +``` + +initializes the build environment (ex: if app uses cmake, the 'configure'' +step will run cmake) + +```bash +autobuild/agl/autobuild build BUILD_ARGS="...." +``` + +builds the application (compile, link binaries, assembles javascript etc.) + +```bash +autobuild/agl/autobuild package PACKAGE_ARGS="..." DEST=<path for resulting wgt +file(s)> +``` + +creates the widget package(s) in the specified destination path prepared by the +caller + +```bash +autobuild/agl/autobuild package-test PACKAGE_ARGS="..." DEST=<path for resulting wgt +file(s)> +``` + +creates the test widget package(s) in the specified destination path prepared by the +caller + +```bash +autobuild/agl/autobuild clean CLEAN_ARGS="..." +``` + +clean the built files (removes the result of autobuild build) + +```bash +autobuild/agl/autobuild distclean DISTCLEAN_ARGS="..." +``` + +clean everything (removes the result of autobuild build + autobuild configure) + +## Generation + +To be integrated in the Yocto build workflow you have to generate `autobuild` +scripts using _autobuild_ target. + +To generate those scripts proceeds: + +```bash +mkdir -p build +cd build +cmake .. && make autobuild +``` + +You should see _autobuild/agl/autobuild_ file now. + +## Available targets + +Here are the available targets available from _autobuild_ scripts: + +- **clean** : clean build directory from object file and targets results. +- **distclean** : delete build directory +- **configure** : generate project Makefile from CMakeLists.txt files. +- **build** : compile all project targets. +- **package** : build and output a wgt package. +- **package-test** : build and output the test wgt as well as the normal wgt + package. +- **install** : install the project in your filesystem + +You can specify variables that modify the behavior of compilation using +the following variables: + +- **CLEAN_ARGS** : Variable used at **clean** time. +- **DISTCLEAN_ARGS** : Variable used at **distclean** time. +- **CONFIGURE_ARGS** : Variable used at **configure** time. +- **BUILD_ARGS** : Variable used at **build** time. +- **DEST** : Directory where to output ***wgt*** file (default at build root + directory). + +Variable as to be in CMake format. (ie: BUILD_ARGS="-DC_FLAGS='-g -O2'") + +Usage example: + +```bash +./autobuild/wgt/autobuild package DEST=/tmp +``` |