ewol/doc/build.md

189 lines
4.7 KiB
Markdown

Build lib & build sample {#ewol_build}
========================
@tableofcontents
Linux dependency packages {#ewol_build_dependency}
=========================
Ubuntu or Debian {#ewol_build_dependency_debian}
----------------
```{.sh}
sudo apt-get install g++ libgl1-mesa-dev zlib1g-dev libasound2-dev
# Compile with Clang:
sudo apt-get install clang
# For andoid compilation (jdk 7 does not work...):
sudo apt-get install javacc openjdk-6-jdk
# Cross compile for windows:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-mingw-w64
# On 64 bits processor for compatibility:
sudo apt-get install ia32-libs
sudo apt-get install g++-multilib libc6-dev-i386
```
Arch-linux {#ewol_build_dependency_archlinux}
----------
```{.sh}
# Cross compile for windows:
pacman -S mingw-w64-gcc
# Cross compile for Android:
in /etc/pacman.conf file uncomment:
[multilib]
Include = /etc/pacman.d/mirrorlist
# update the system:
Pacman -Syu
# install lib C:
pacman -S lib32-glibc lib32-zlib lib32-gcc-libs
# install open-jdk 7.0
pacman -S jdk7-openjdk
# connect adb: (and you can do a "android/sdk/platform-tools/adb shell" to enable computer key on device)
pacman -S android-udev
```
Download: {#ewol_build_download}
=========
ewol use some tools to manage source and build it:
need google repo: {#ewol_build_download_repo}
-----------------
see: http://source.android.com/source/downloading.html#installing-repo
On all platform:
```{.sh}
mkdir ~/.bin
PATH=~/.bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
chmod a+x ~/.bin/repo
```
On ubuntu
```{.sh}
sudo apt-get install repo
```
On archlinux
```{.sh}
sudo pacman -S repo
```
lutin (build-system): {#ewol_build_download_lutin}
---------------------
```{.sh}
pip install lutin --user
# optionnal dependency of lutin (manage image changing size for application release)
pip install pillow --user
```
The full build tool documentation is availlable here : [lutin](http://heeroyui.github.io/lutin/)
dependency: {#ewol_build_download_dependency}
-----------
```{.sh}
mkdir -p WORKING_DIRECTORY/framework
cd WORKING_DIRECTORY/framework
repo init -u git://github.com/atria-soft/manifest.git
repo sync -j8
cd ../..
```
sources: {#ewol_build_download_sources}
--------
They are already download in the repo manifest in:
```{.sh}
cd WORKING_DIRECTORY/framework/atria-soft/ewol
```
Build: {#ewol_build_build}
======
you must stay in zour working directory...
```{.sh}
cd WORKING_DIRECTORY
```
library: {#ewol_build_build_library}
--------
```{.sh}
lutin -mdebug ewol
```
Sample: {#ewol_build_build_sample}
-------
```{.sh}
lutin -mdebug ewol-sample-*
```
Run sample: {#ewol_build_run_sample}
-----------
Basic way
```{.sh}
lutin -mdebug ewol-sample-*?run
```
With some option: (set global log leval at 2 (print, error, warning), and "appl" library at log level 6
```{.sh}
lutin -mdebug ewol-sample-*?run:--elog-level=2:--elog-lib=appl:6
```
Build for Android and install: {#ewol_build_android}
==============================
Sample: {#ewol_build_android_sample}
-------
```{.sh}
lutin -tAndroid -mdebug ewol-sample-*
```
Sample: {#ewol_build_android_install_sample}
-------
```{.sh}
lutin -tAndroid -mdebug ewol-sample-*?install
```
Worktree explanation: {#ewol_build_workspace}
=====================
The workspace is a simple folder that contain all the modules ans sub module availlable for build.
It will create a tree like this :
- **workspace**
* **application:** set your application here, it is a good position
* **framework:** framework download by repo
+ **atria-soft:** graphic framework
+ **generic-library:** open sources library that is wrapped on lutin builder
+ **musicdsp:** Common library for audio interfacing
+ **tools:** build tools (now only the IOs flasher)
* **out:**
+ Android_arm_32
+ Android_arm_64
+ Windows_x86_32
+ Windows_x86_64
+ Linux_x86_32
+ Linux_x86_64
+ MacOs_x86_32
+ MacOs_x86_64
+ IOs_x86_32
+ IOs_x86_64
All the build object are set in the out path, then to restart with a clean build simply remove this folder