Compiling EFL on OS X Yosemite

One of the great things about code developed for Linux / Unix is how portable it can be and how it should compile on so many different systems. Autotools is, however, a pain and experiences in the past have proved less fruitless than the ideals foretell.

With some help from the Enlightenment developer crowd I set to compile the EFL on OS X Yosemite. Here is my rundown on what you need to do if you’re keen to try the same (note that this uses HomeBrew – I tried with MacPorts with little luck, if you are using ports please uninstall it first):

Install XQuartz (https://xquartz.macosforge.org)
Install HomeBrew (http://brew.sh/)

Then execute the following commands from your terminal:

brew install autoconf automake libtool gettext pkg-config check libjpeg luajit fribidi giflib libtiff glib xz dbus cmake bullet gnu-sed

brew link gettext --force
git clone git@git.enlightenment.org:core/efl.git
cd efl

export LDFLAGS="-L/usr/X11/lib -L/usr/local/lib"
export CFLAGS="-I/usr/X11/include -I/usr/X11/include/freetype2 -I/usr/local/include"
export PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig/:$PKG_CONFIG_PATH
export PATH="/usr/local/opt/gnu-sed/libexec/gnubin:$PATH:/usr/local/bin"

./autogen.sh --without-x --with-x11=none --enable-cocoa --disable-pulseaudio --disable-audio --disable-gstreamer1 --disable-gstreamer --enable-i-really-know-what-i-am-doing-and-that-this-will-probably-break-things-and-i-will-fix-them-myself-and-send-patches-aba
make
sudo make install

cd ../
git clone git@git.enlightenment.org:core/elementary.git
cd elementary
./autogen.sh
make
sudo make install

That should get you to a place where the EFL and Elementary are all installed into /usr/local. Note that at this stage there are many known issues – one of the larger being that mouse input is not recognised…

Please file patches to us at phabricator.

3 thoughts on “Compiling EFL on OS X Yosemite

  1. Hello. Thanks for the guidelines. I tried with 0.13.x and it worked. Now that 0.14.x is out I tried again (just in case the issue with the mouse was resolved) but now it fails to build EFL with the following error:
    Undefined symbols for architecture x86_64:
    “__EFL_MODEL_BASE_EVENT_CHILDREN_COUNT_CHANGED”, referenced from:
    __eio_done_children_load_cb in lib_eio_libeio_la-eio_model.o
    “__EFL_MODEL_BASE_EVENT_CHILD_ADDED”, referenced from:
    __efl_model_evt_added_ecore_cb in lib_eio_libeio_la-eio_model.o
    “__EFL_MODEL_BASE_EVENT_CHILD_REMOVED”, referenced from:
    __efl_model_evt_deleted_ecore_cb in lib_eio_libeio_la-eio_model.o
    “__EFL_MODEL_BASE_EVENT_LOAD_STATUS”, referenced from:
    __load_set in lib_eio_libeio_la-eio_model.o
    “__EFL_MODEL_BASE_EVENT_PROPERTIES_CHANGED”, referenced from:
    __eio_move_done_cb in lib_eio_libeio_la-eio_model.o
    __eio_stat_done_cb in lib_eio_libeio_la-eio_model.o
    “_efl_model_base_interface_get”, referenced from:
    _eio_model_class_get in lib_eio_libeio_la-eio_model.o
    “_efl_model_child_add”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_child_del”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_children_count_get”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_children_load”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_children_slice_get”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_load”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_load_status_get”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_properties_get”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_properties_load”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_property_get”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_property_set”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_unload”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make[4]: *** [lib/eio/libeio.la] Error 1
    make[3]: *** [all-recursive] Error 1
    make[2]: *** [all] Error 2
    make[1]: *** [all-recursive] Error 1
    make: *** [all] Error 2

  2. Hello. I tried with 0.13.x before and it worked ok. Now with 0.14.x EFL build fails with the following:

    Undefined symbols for architecture x86_64:
    “__EFL_MODEL_BASE_EVENT_CHILDREN_COUNT_CHANGED”, referenced from:
    __eio_done_children_load_cb in lib_eio_libeio_la-eio_model.o
    “__EFL_MODEL_BASE_EVENT_CHILD_ADDED”, referenced from:
    __efl_model_evt_added_ecore_cb in lib_eio_libeio_la-eio_model.o
    “__EFL_MODEL_BASE_EVENT_CHILD_REMOVED”, referenced from:
    __efl_model_evt_deleted_ecore_cb in lib_eio_libeio_la-eio_model.o
    “__EFL_MODEL_BASE_EVENT_LOAD_STATUS”, referenced from:
    __load_set in lib_eio_libeio_la-eio_model.o
    “__EFL_MODEL_BASE_EVENT_PROPERTIES_CHANGED”, referenced from:
    __eio_move_done_cb in lib_eio_libeio_la-eio_model.o
    __eio_stat_done_cb in lib_eio_libeio_la-eio_model.o
    “_efl_model_base_interface_get”, referenced from:
    _eio_model_class_get in lib_eio_libeio_la-eio_model.o
    “_efl_model_child_add”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_child_del”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_children_count_get”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_children_load”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_children_slice_get”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_load”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_load_status_get”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_properties_get”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_properties_load”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_property_get”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_property_set”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    “_efl_model_unload”, referenced from:
    __eio_model_op_desc in lib_eio_libeio_la-eio_model.o
    ld: symbol(s) not found for architecture x86_64
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    make[4]: *** [lib/eio/libeio.la] Error 1
    make[3]: *** [all-recursive] Error 1
    make[2]: *** [all] Error 2
    make[1]: *** [all-recursive] Error 1
    make: *** [all] Error 2

    Any idea how to fix this?

    Many thanks for the guidelines

    Nikos

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s