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.
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
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
Hi Nikos,
Can you try again? I’ve released 0.1 and it works with the recent EFL 1.15 release so there’s far less chance of random compile errors.
Have fun!