0.10
Getting Started

There are various ways to get started with EGT depending on your requirements. If building for a Microchip MPU Xplained or EK type board, visit Linux4SAM. If you are building EGT on a PC, you can start by just fetching the source of the EGT project. If you are developing for and deploying to a target board, the easiest way to work with EGT is part of a buildroot SDK which already includes a cross compiler and all of the necessary dependencies and tools.

See Eclipse Development Environment Setup for how to setup the Eclipse IDE for host or cross compiling.

If you are planning to work on EGT itself, see the CONTRIBUTING.md file in the root of the EGT repository.

Fetching Source

Fetch the source:

git clone --recursive https://github.com/linux4sam/egt.git
Note
Note the --recursive option. This option is necessary to initialize any git submodules in the project. If you forget to do this, autogen.sh will do it for you.

Building

EGT uses the GNU autotools, like automake, for building on Linux platforms.

To build for a PC, first install the required dependencies for building EGT:

sudo apt install build-essential automake autoconf libtool pkg-config \
libdrm-dev libinput-dev libcairo-dev libjpeg-dev libmagic-dev gettext

Optional, but recommended, EGT Dependencies include:

sudo apt install librsvg2-dev liblua5.3-dev libcurl4-openssl-dev \
libxkbcommon-dev xkb-data
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install libplplot-dev plplot-driver-cairo
sudo apt install libasound2-dev libsndfile1-dev

Then, clone the source and initialize autotools. Typically autotools only needs to be initialized once and it will automatically pick up most changes. However, when making changes to the configure scripts, the environment, or makefiles re-running autogen.txt, or more simply autoreconf -fvi, is necessary.

git clone --recursive https://github.com/linux4sam/egt.git
cd egt
./autogen.txt

Then, configure and build.

./configure
make

You can also build out of the source tree. This is useful, for example, to use the same code tree with different parameters and environments to configure the build in as many different build directories as you wish. It also avoids polutting the source tree with build artifacts.

mkdir -p build/host
cd build/host
../../configure
make

Then, run an example.

cd examples/basic
./basic

EGT also supports cross compilation for target systems. If you already have a cross compiler available with dependent libraries available, add it to your PATH and follow the standard instructions.

Note
When adding cross compilation paths to the PATH environment variable, it should come before any existing system paths.
./autogen.txt
./configure --prefix=/nfsroot/root/egt/ --host=arm-buildroot-linux-gnueabi
make

Configure Options

You can run "./configure --help" to see more options. Some non-standard options are listed here, but not all.

--enable-code-coverage
Whether to enable code coverage support
--disable-debug
build without debugging support [default=no]
--enable-gcov
turn on code coverage analysis tools
--enable-profile
turn on profiling tools
--enable-examples
build examples [default=yes]
--enable-lto
enable gcc's LTO [default=no]

Cross Compiling With Buildroot

EGT is included as a package as part of the buildroot-external-microchip project. To build a complete SDK and target filesystem for a board, follow the instructions found in that project's README with the following versions.

git clone https://github.com/linux4sam/buildroot-external-microchip.git -b egt_devel
git clone https://git.buildroot.net/buildroot -b 2019.05.1
cd buildroot
BR2_EXTERNAL=../buildroot-external-microchip/ make sam9x60ek_egt_defconfig
make

See the configs directory in the buildroot-external-microchip project for alternate EGT defconfigs.

First Application

The examples folder of the EGT project contains various examples. This is the basic example which shows the minimum necessary to create a window with a button on it.

The include file <egt/ui> contains most basic functionality needed.

#include <egt/ui>
int main()
{
egt::Application app;
egt::TopWindow window;
egt::Button button(window, "Press Me");
egt::center(button);
window.show();
return app.run();
}

If you want to use a UI file instead.

#include <egt/ui>
#include <egt/uiloader.h>
int main(int argc, char** argv)
{
egt::Application app(argc, argv);
#ifdef EXAMPLEDATA
egt::add_search_path(EXAMPLEDATA);
#endif
egt::experimental::UiLoader loader;
auto window = loader.load("file:ui.xml");
window->show();
return app.run();
}

Using this Documentation Offline or With Other Development Tools

This documentation is also available in the form of a docset that can be read and searched using a tool like Dash (macOS) and Zeal (macOS/Windows/Linux). In turn, the documentation can be integrated into an IDE or tools like Atom/VSCode for an indexed and easily searchable API reference. These tools also provide a method for automatically or manually updating to the latest EGT documentation.

Once you have one of these tools installed, the docset feed URL is located at:

https://linux4sam.github.io/egt-docs/docset/EGT.xml

Note
To install Zeal, see the official documentation to download and installing. Specifically, on Ubuntu, it is recommended to get the latest version with their PPA.
sudo add-apt-repository ppa:zeal-developers/ppa
sudo apt update
sudo apt install zeal