Source

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.

Basic Requirements

Before you start you will want basic build tools installed such as:

  • git
  • autoconf (2.59 or better)
  • automake (1.10 or better)
  • autopoint
  • libtool
  • gettext
  • meson and ninja (needed for enlightenment, terminology, rage …)

Get The Source

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

Dependencies

Build Environment

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"

Runtime Library Linking

Note the 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:

/usr/local/lib

And remember to run sudo ldconfig tool every time you install a library to ensure caches are updated.

Build Order

For libraries (build these before applications), build them in order:

  • efl
The following then only if using releases of 1.17 or before (GIT no longer needs these).
  • elementary
  • emotion_generic_players
  • evas_generic_loaders

Then any further applications or tools (in any order now) such as:

  • enlightenment
  • terminology
  • rage
  • etc.

Compilation

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
# see README for more information
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.

Debugging

For debugging you really want tools like these installed:

  • gdb
  • valgrind
  • perf

Please refer to our EFL application debugging page for full details on debugging with EFL.


Developer git access

If you get git commit access simply use

git clone git+ssh://git@

instead of

git clone https://

Discussion

Andrew Senior,

can't configure efl with the following: export ECORE_WAYLAND_CFLAGS=“-I /usr/include” ECORE_WAYLAND_LIBS=“-L/usr/lib -lwayland-client -lwayland-cursor”

./configure  --prefix=/usr --exec-prefix=/usr --with-x11=none --disable-doc --with-tests=no --with-crypto=none --enable-wayland  --with-glib=no --disable-gstreamer1

Complains that that there is no wayland-client or wayland-scanner pc even with PKG_CONFIG_DIR set. Verions are at 1.90


SO I tried this because I want to see if it will compile against libcmusl. ./configure –prefix=/usr –with-x11=none –disable-doc –with-tests=no –with-crypto=none –with-glib=no –disable-gstreamer1 –enable-fb –disable-rpath –disable-pulseaudio –disable-tslib –with-profile=release –disable-avahi –disable-libeeze –disable-physics


Configure works hooray but then complains there is no Makefile.in in src/ (which is true :(()

Ard van Breemen,

+ git clone http://git.enlightenment.org/core/efl.git efl Cloning into 'efl'… remote: Counting objects: 467756, done. remote: Compressing objects: 100% (78273/78273), done. error: RPC failed; result=18, HTTP code = 2000 MiB | 19.00 KiB/s I don't know if https also breaks it. git clone git: works perfectly though.

Shuhrat Dehkanov, ,

HTTPS is working perfectly fine, try git clone https://git.enlightenment.org/core/efl.git

Jeremy Suntheimer,

After installing the dependencies for Ubuntu 16.04, one must create a symbolic link so that ecore can find libcurl.

sudo ln -s libcurl-gnutls.so.4.4.0 libcurl.so.4

Georgi,

Hi all, I am a newbie, so my question might be a bit stupid , but…please help :) Running the autogen script it fails with “C compiler cannot create executables” In config.log I can find few errors, all related to gcc : gcc: error: unrecognized command line option '-V' gcc: error: unrecognized command line option '-qversion' configure:6378: gcc -03 -ffast-math -march=native conftest.c >&5 gcc: error: unrecognized command line option '-03'

OS: Centos 7.3.1611 gcc: 6.2.1 20160916 (Red Hat 6.2.1-3) Any help please? Thanks in advance!

Just installed fresh Ubuntu 17.04 on a Dell XPS 15, so I compiled and installed EFL, Enlightenment, and Terminology from this page without error (a few warnings but nothing serious, by the look of it).

But enlightenment doesn't appear in the drop-down list of window managers when I log out and log in again.

Does anyone have the .desktop file needed for /usr/share/xsessions/?

Fixed, thanks to Eric on enlightenment-users: I had to copy /usr/local/share/xsessions/enlightenment.desktop to /usr/share/xsessions (the script for the earlier version did this automatically, which I had forgotten)

BTW what would happen — now that I have compiled and installed EFL, Enlightenment, and Terminology — if I installed them again from the suggested repositories? Would everything (all the libraries etc) be properly overwritten, or would there be odds and ends left hanging?

If I wanted to go the repo route, how do I UNinstall EFL, Enlightenment, and Terminology?

Irrelevant now that I have it working, but curious nevertheless.

Raster,

if you rebuild and install it just overwrites what you had - it upgrades. that's it. developers do this dozens of times per day… as we develop. we keep our src trees and rebuild all the time and re-install over the same location

You could leave a comment if you were logged in.