All our source repositories are on:
Our source code is developed collaboratively in a pretty typical open source manner. Our master branches in git are where all new development goes into as it happens, thus they are technically “unstable”. We try and keep master working and usable daily, as developers generally are living off master themselves, so bugs affect developers directly and immediately. Sometimes issues happen, but they tend to get fixed rapidly.
Before you start you will want basic build tools installed such as:
As any general anonymous user for the EFL core libraries:
git clone https://git.enlightenment.org/core/efl.git
And for some sample well developed / maintained applications
git clone https://git.enlightenment.org/core/enlightenment.git git clone https://git.enlightenment.org/apps/terminology.git git clone https://git.enlightenment.org/apps/rage.git
You will want to ensure the default prefix
/usr/local is available to build tools. If you know what you are doing, you can change the prefix, but this here shall assume you do not, and the above prefix is used. These environment variables are used during build, so you may want to make them more permanent.
export PATH=/usr/local/bin:"$PATH" export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:"$PKG_CONFIG_PATH" export LD_LIBRARY_PATH=/usr/local/lib:"$LD_LIBRARY_PATH"
Below choose one of the following
CFLAGS to use. To ensure your code is compiled with decent optimzations you should also set this up in your environment:
export CFLAGS="-O3 -ffast-math -march=native"
Note that if you wish to compile for older architectures than your current system, please look up the compiler documentation and replace
-march=native with something appropriate.
If you wish decently optimized code that is still debuggable (but that optimizations may still make a little hard to debug) you can do:
export CFLAGS="-O2 -ffast-math -march=native -g -ggdb3"
If you want a really debuggable piece of code where optimizations mess with little to nothing at all use:
export CFLAGS="-O -g -ffast-math -march=native -ggdb3"
LD_LIBRARY_PATH environment variable is set. You can ensure the system always supports
/usr/local/lib by editing
/etc/ld.so.conf or adding a file to
/etc/ld.so.conf.d and simply have a line in either file that says:
And remember to run
sudo ldconfig tool every time you install a library to ensure caches are updated.
For libraries (build these before applications), build them in order:
The following then only if using releases of 1.17 or before (GIT no longer needs these).
Then any further applications or tools (in any order now) such as:
For every library or application simply go into the source directory where you find a
configure.ac file and run the following:
./autogen.sh # If compiling EFL and Wayland support is needed then use ./autogen.sh --enable-wayland instead. make sudo make install sudo ldconfig # needed on Linux to update linker library database
If you are in a library that doesn't have a
configure.ac, it is likely using meson. For meson based libraries and applications run this in the project's top level directory:
meson build cd build # If compiling Enlightenment and Wayland support is needed then run meson configure -Dwayland=true after the cd build command. ninja sudo ninja install sudo ldconfig
If configure (which autogen.sh will run for you) fails, you are likely missing a dependency - provide it. It should tell you what that dependency is. NOTE that you can provide configure arguments to autogen.sh such as
–prefix=/opt/e or similar.
For debugging you really want tools like these installed:
Please refer to our EFL application debugging page for full details on debugging with EFL.
If you get git commit access simply use
git clone git+ssh://git@
git clone https://