Page MenuHomePhabricator

OS X
Updated 821 Days AgoPublic

IMPORTANT: This page might be obsolete. Please refer to https://www.enlightenment.org/distros/osx-start for an up-to-date documentation.

The Enlightenment Foundation's projects mostly targets Linux platforms, therefore not everything work on Mac OS X (Darwin kernel) works the first time. This is due to:

  • the specificities of the OS
  • there are a very few Enlightened OS X users :'(

This document explains how to install the EFL/Elementary which are key projects to install anything else made by the Enlightenment Foundation. It also shows what does not work on OS X that does on Linux.

Issues (non-exhaustive list)

Set the environment up

You need to have the OS X CLT (Command-Line Tools) first, then install the dependancies. The easiest way is by using a package manager. There are (mostly) two flavours about package managers on OS X: macports and homebrew. You should choose only one of them, it is not recommended to use both.

NOTE: I personally recommend homebrew over macports (more flexible, easier to use, less conflicts — imho).

Command-Line Tools (CTL)

WARNING: The CTL are not directly installed with Xcode.
  • Download the latest version of Xcode on the Mac App Store.
  • Run xcode-select --install in a terminal to install the CLT.

XQuartz

Since OSX 10.7, Apple does not support X11, therefore you have to download it by yourself: download the .dmg at http://xquartz.macosforge.org/landing/ and follow the installation procedure. Currently, the EFL do not fully support the native Cocoa display; it is therefore necessary to use X11 for the moment.

Install in one go from a package manager

Since mid-April 2015, Leif Middelschulte provided Homebrew formulas for :

  • EFL 1.14.0
  • Elementary 1.14.0
  • evas-generic-loaders 1.14.0

If you want to install these stable versions peacefully, this is the solution you are looking for.

See at http://brew.sh how to install Homebrew if it isn't already installed.
Then, just execute :

brew update                       # Just to refresh homebrew
brew install efl                  # To install EFL
brew install elementary           # To install Elementary
brew install evas-generic-loaders # To install evas-generic-loaders

Build code from sources

If you want to have the very latest (maybe unstable) version of EFL, Elementary, here is the procedure :

  • how to install the dependancies;
  • how to configure the source;
  • how to compile the sources and install them.

Dependancies with macports

A standard usage of Macports makes the configure options --disable-lua-old and --enable-nls fail! The following has been experienced using the macports procedure by using luajit (2.0.3) and the option --enable-nls. During the make update-po, the xgettext_wrapper.sh scripts launches a lua program with Elua. It exits with error 141. The problem is fixed by using lua instead of luajit (--enable-lua-old). For now, I recommend to disable nls (--disable-nls) if you don't need it.

I would recommand to set some environment variables as it follows (I assume you will use a standard installation of macports then):

export CFLAGS="-I/opt/local/include -I/opt/X11/include ${CFLAGS}"
export LDFLAGS="-L/opt/local/lib ${LDFLAGS}"
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/opt/X11/lib/pkgconfig:${PKG_CONFIG_PATH}"

If you don't know what to do with these variables, just add them at the end of your ~/.profile file.

To install macports, just go here: https://www.macports.org/install.php and download the .pkg for your version of OSX. Follow the installation procedure, and restart your terminal if it was open (or do a source ~/.profile).

Let's update macports first:

sudo port selfupdate
IMPORTANT: If lua is already installed with macports (and with default settings), you may not want to install luajit in the following list. Indeed, by default, the lua package has the brilliant (yes, this is sarcasm) idea to install its headers in the ${MACPORTS_ROOT}/include/ directory whereas luajit is installed in ${MACPORTS_ROOT}/include/luajit-${luajit-version}. Since their headers have the same names, lua is always used in place of luajit, and eventually, a linker error occurs...

Then, let's install everything in one go:

sudo port install automake autoconf libtool pkgconfig check openssl jpeg luajit freetype fontconfig fribidi giflib tiff bullet libspectre libraw librsvg

During the process, macports installs also dbus. To activate dbus at startup, just run (as macports suggests):

sudo launchctl load -w /Library/LaunchDaemons/org.freedesktop.dbus-system.plist
sudo launchctl load -w /Library/LaunchAgents/org.freedesktop.dbus-session.plist
configure flags
--disable-gstreamer
--disable-gstreamer1
--disable-pulseaudio
--enable-lua-old

Dependancies with Homebrew

See the installation procedure here: http://brew.sh.
It is not recommended to install the packages as root (but homebrew will make you know it).

brew install autoconf automake libtool autoconf-archive gettext check pkg-config luajit
brew install libjpeg freetype fribidi fontconfig giflib libtiff glib dbus libsndfile bullet

Then, launch dbus:

mkdir -p ~/Library/LaunchAgents
ln -sfv /usr/local/opt/dbus/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/org.freedesktop.dbus-session.plist

You need to add autopoint to your $PATH if you want to use gettext:

export PATH="$(brew --prefix gettext)/bin:$PATH"

Install the EFL

Installing dependancies on OS X is painful, but now you did it (congrats'), you can grab the sources from the git repository:

git clone git://git.enlightenment.org/core/efl.git

Standard installation

You will have a safe (understand working out of the box) installation if you run (of course, after a cd /where/you/have/downloaded/efl):

./autogen.sh --prefix=/usr --disable-gstreamer --disable-gstreamer1 --disable-pulseaudio --enable-i-really-know-what-i-am-doing-and-that-this-will-probably-break-things-and-i-will-fix-them-myself-and-send-patches-abb
NOTE: Be aware that all files to be installed will be located in /usr. Btw, it seems homebrew does not really like when you put your files in /usr/local (its default root).
IMPORTANT: On OS X El Capitan (10.11), you can not use --prefix=/usr (use --prefix=/usr/local instead). This is due to the "System Integrity Protection" (https://support.apple.com/en-us/HT204899). It is discouraged to disable this.

Cocoa port

To render windows and stuff, the EFL use Engines written in the Ecore library. The Ecore_Cocoa engine aims at using the Cocoa environment to create the GUI. It is under developement for now, and at a very early stage, so the applications will not be functional. If you would like to contribute to it (or just to test it), then you are welcome to configure the sources as it follows by adding --enable-cocoa flags to your ./autogen.sh or ./configure. Note that you can disable X11 by using the flag --with-x11=none.

Compile and install

If everything went OK, you should be able to compile the sources:

make

or to do it way, way faster:

make -j N # where N = number of parallel jobs

then, if once again, everything went OK, install:

sudo make install

Enlightenment (E)

E cannot yet be run (can be compiled though) on OS X. XComposite is not available with XQuartz; therefore, init fails when compositor is queried.

Enlightenment relies on Eeze, but this dependency can be skipped.
First init the autotools:

./autogen --disable-device-udev

Then compile:

make # or make -j N where N is the number of parallel jobs

Extras

This section is not specific to OS X. However, these are good basis to try out the Ecore_Cocoa engine.

Terminology

You might want to give a try to this terminal emulator (http://enlightenment.org/p.php?p=about/terminology&l=en).

git clone git://git.enlightenment.org/apps/terminology.git && cd terminology
./autogen.sh
make # or make -j N with N = number of parallel jobs
sudo make install

Runtime engine selection

If you decided to support Ecore_Cocoa for development purpose (God bless you), it will be used by default when running a graphical application (unless stated otherwise in the elementary_config program). You can select the engine in an environment variable:

ELM_ENGINE=opengl_cocoa terminology      # To use Ecore_Cocoa
ELM_ENGINE=software_x11 terminology      # To use Ecore_X
ELM_ENGINE=opengl_x11 terminology        # To use Ecore_X with OpenGL
Last Author
ajwillia.ms
Last Edited
Sep 16 2016, 10:34 AM
Projects
None
Subscribers
NikaWhite, jbflamant, VimCommando and 2 others