Navigation
Personal tools
 

EFL Windows XP


Contents

Introduction

This document provides some help to build the EFL on Windows. The current EFL that are ported are evil, eet, evas, ecore, embryo, edje, efreet and ewl. The ports are not complete, nor without bugs (especially ewl). So any help is welcome.

Currently, only MSYS/MinGW are used to compile the EFL. Later, documentation about Visual C++ or Eclipse will be added.

Installation and configuration of MSYS/MinGW

MSYS provides a set of tools to make life easier when porting programs or libraries from Unix to Windows. It includes a terminal, a shell (bash) and the autotools. Contrary to Cygwin, MSYS builds native Win32 applications or libraries. MinGW provides mainly gcc.

MSYS can be downloaded on Sourceforge, but the links will be given below.

You will need a file archiver. I like 7-zip.

Installation

The total size of the installation of MSYS/MinGW is around 110 MB. Be sure to have enough space on your hard disk.

  • Install MSYS 1.0.10. I usually install it in d:\msys\1.0, but you can use any directory that you prefer. Although you want to keep one thing in mind. However it is possible, currently it is unwise to install it to a path what contains spaces. In the post-install (the black window), choose "no" (you don't want post-install). (Msys's post install is not currently able to find mingw in a directory that has spaces in it's path.) You should set your HOME environment variable to point to the home directory of your msys installation, e.g. d:\msys\1.0\home\whatever. If you don't know how to set an environment variable, you will find the answer at http://support.microsoft.com/kb/310519 .
  • Install MinGW 5.1.3 in d:\msys\1.0\mingw. It is better to not install it in the same directory than MSYS, though there should be no problem since MSYS 1.0.11. In the installer, choose "Download and install", then "Candidate" (it will install gcc 3.4.5).

(User's note: actually the mingw installer is not working for me, I don't know, why. Instead I've downloaded the current version of CodeBlocks from sourceforge.net (the version with mingw). CodeBlocks has mingw in it's directory. I just copied that directory to D:\msys\1.0\mingw. This will also hav gcc 3.4.5. Hope it helped.)

Now you should have a cyan "M" link on the Desktop. When you double-click on it, a terminal should be launched.

Now it is useful if you know how to use the clipboard in the msys terminal. If you select a text with your mouse in the msys terminal, it is immediately copied to the clipboard. If you want to paste from clipboard, use the Shift-Insert keyboard combination.

The autotools that are installed by MSYS DTK do not work well and can't build DLL. Newer versions of autoconf, automake and libtool are needed. Like all the programs that will be installed, you MUST NOT install them in /usr, nor in /mingw. Install them in /usr/local. The PATH already includes that directory.

We will install autoconf 2.61, automake 1.10 and libtool 1.5.24. They are sufficient and are working perfectly.

(User's note: my way of downloading these files is: in the browser, I copy the link of one of the files, e.g. the autoconf one, to the clipboard. Then in msys terminal, I type "wget " and hit shift-insert to paste. So I get something like "wget http://something.com/dir/file.zip". I hit enter. This downloads the file to the current directory.)

(User's note2: now how to untar. Untar means unzip. :) Basically they mean you should extract the archives. Now you will face three types of archives. First is the one with the extension .tar.gz. The other one is .tar. The third is .bz2. To extract them right in the terminal, you should use:

tar.gz:

tar -xzf archive.tar.gz

Please note that tar.gz is the as tgz .

tar:

tar -xf archive.tar

bz2:

bzip2 -d archive.bz2

Note that it is possible that you will extract a tar from a bz2. You have to do the tar stuff for that, too.) Edit: OK, actually you'll also face zip archives. Just do "unzip archive.zip" on them.

  • Go to tmp/autoconf-2.61 and run ./configure, then make install. Go to tmp/automake-1.10 and run ./configure, then make install. Go to tmp/libtool-1.5.24 and run ./configure, then make install.

Now close the terminal and relaunch it.

Configuration

As all the libraries will be installed in /usr/local, CPPFLAGS, LDFLAGS and PKG_CONFIG_PATH must be set.

You have to edit the file /etc/profile (d:\msys\1.0\etc\profile). Do NOT use Notepad or common Windows editors. If you know how, use Emacs or Vi (They exist on Windows.) If you don't, use "Notepad++". The reason behind this is that msys uses the Unix-style Newline character, not Windows-style, and normal Windows editors can't handle this. If you don't understand this just use Notepad++ for editing D:\msys\1.0\etc\profile. (You can download it from http://notepad-plus.sourceforge.net). So open /etc/profile and add:

CPPFLAGS="-I/usr/local/include"
LDFLAGS="-L/usr/local/lib"
PKG_CONFIG_PATH="/usr/local/lib/pkgconfig"
CVS_RSH=ssh

for example just before

export HOME LOGNAME MSYSTEM HISTFILE

and modify that line by adding the four variables:

export HOME LOGNAME MSYSTEM HISTFILE CPPFLAGS LDFLAGS PKG_CONFIG_PATH CVS_RSH

If you don't want to do development with mingw, you might also want to set CFLAGS. Good options for MinGW are:

CFLAGS="-O3 -s -mms-bitfields -march=`uname -m`"

If your msys terminal has very small fonts, and you are like me and you want bigger fonts, open d:\msys\1.0\msys.bat in Notepad++ or Vim or Emacs. (Do NOT use simple Notepad or any common windows file editor.) Search for "-fn". Most likely you will see "-fn Courier-12". Change that to, for example, "-fn Courier-16". This will do it. If you choose another font family, please, keep in mind that msys uses rxvt for terminal by default, and this means that you'll need an ASCII font. (NOT any normal windows font will do!) Also, don't forget to restart your terminal.

Build of Evil

Evil is a library that tries to implement for Windows some Unix function that do not exist on the evil Microsoft platform. In addition to Windows XP (and maybe below), it supports Windows CE platform with the CeGCC framework. There is not dependency. Just download it from svn (trunk/PROTO/evil). To do this, type:

svn co http://svn.enlightenment.org/svn/e/trunk/PROTO/evil

Now go to the evil subdir. Then,

./autogen.sh
make
make install

You should now have evil libraries and binaries installed in /usr/local.

Build of Eina

Eina is a library that implement data types in an very optimized way. It includes also a small set of tools that can be used in most of the EFL. It depends on Evil (on Windows). For Evil, you just need pkg-config.

Dependencies

Untar glib 2.14.6, pkg-config 0.23, gettext 0.14.5, libiconv 1.9.1 in /usr/local.

Note that unlike on Unix like systems, the "shared library" files (the DLL files) are installed in the bin/ sub directory.

Build Eina

Download it from svn (trunk/eina) and go to the eina subdir. Then,

./autogen.sh
make
make install

You should now have eina libraries and binaries installed in /usr/local.

Build of Eet

Eet needs Evil (only on Windows, of course), Eina, zlib and libjpeg. Win32 ports of these two last libraries exist. They must be installed first. A header file will also be needed.

Dependencies

  • From the GnuWin32 zlib page, download and unzip the binary and development files in /usr/local (d:\msys\1.0\local).
  • From the GnuWin32 libjpeg page, download and unzip the binary, dependency and development files in /usr/local.

Build Eet

It is better to get Eet from svn. As usual, you should do this in msys:

svn co http://svn.enlightenment.org/svn/e/trunk/eet

Like on Unix : go to the eet/ subdir, then

./autogen.sh
make
make install

You should now have eet installed in /usr/local.

Build of Evas

Evas has some required dependencies, as well as optional dependencies (for loaders and engines).

Dependencies

  • The available engines are based on DirectDraw, Direct3d, SDL and OpenGL (and of course the buffer one, which is always built).
    • For SDL, just compile the source code that you can find here.
    • For OpenGL, the Glew library is needed. Get the sources and untar them in your home directory. Then edit the Makefile and add /local to the value of GLEW_DEST (to install Glew in /usr/local). Then make and make install.
    • For DirectDraw and Direct3D, you will need the Microsoft DirectX SDK. Install it. It will put the latest dll in c:\windows\system32. Then just copy the necessary headers (ddraw.h) in /usr/local/include. No need of the static lib, they are already provided by MinGW.

(User's note: OK, directx sdk is simply 532 megabyte these days. ddraw.h is less then 100 kilobyte I suppose. Downloading the whole sdk seemed ridiclious for me (i have 50 kilobyte/sec max., if I am fortunate; not to speak about the amount of space on my hard drive for this stupid sdk thingy), so I just grabbed the directx7 headers from mplayerhq: http://www.mplayerhq.hu/MPlayer/contrib/win32/dx7headers.tgz I hope it works! :))

Build Evas

It is better to get Evas from svn. Open an MSYS terminal. Your friend again is

svn co http://svn.enlightenment.org/svn/e/trunk/evas
Or you could just follow the instructions on that page to get the same result.

Like on Unix : go to the evas/ subdir, then:

With all dependencies installed (MS SDK, SDL and GLEW engines):

./autogen.sh --enable-software-ddraw --enable-software-16-ddraw --enable-direct3d --enable-sdl --enable-gl-glew
make
make install

Without MS SDK (only SDL and GLEW engines):

./autogen.sh --disable-software-x11 --disable-xrender-x11 --disable-software-16-wince --enable-sdl --enable-gl-glew
make
make install

You should now have evas and its built modules installed in /usr/local.

Build of Ecore

The only dependencies of Ecore for Windows are Curl and libiconv.

Dependencies

  • Untar GNU libiconv in /usr/local. (User's note: actually if you follow this tutorial from the start then you'll already have this!)
  • Libcurl: untar libcurl 7.19.4. Copy the bin/, lib/ and include/ sub directories to /usr/local and copy libcurl.pc to /usr/local/lib/pkgconfig. Do not forget to edit the prefix value in libcurl.pc. (User's note: I suppose I have to change the prefix from '.' to '/usr/local' (like in all the other .pc files in that directory), right?)

Build Ecore

It is better to get Ecore from svn. I guess you've already figured out for now how to do this. If not, search backward for examples. Or you could always just open an MSYS terminal and follow the instructions on that page.

Like on Unix : go to the ecore/ subdir, then

./autogen.sh --enable-ecore-sdl --enable-ecore-win32 --disable-ecore-con --with-iconv-link=-liconv
make
make install

You should now have ecore and all its modules installed in /usr/local.

Build of Embryo

No dependency for Embryo. Just download it from svn and go to the embryo subdir. Then,

./autogen.sh 
make
make install

You should now have embryo library and binaries installed in /usr/local.


Build of Edje

The dependencies of Edje are already installed (eina, eet, evas, ecore_job, ecore_evas and embryo). So download it from svn and go to the edje subdir. Then,

./autogen.sh 
make
make install

You should now have edje library and binaries installed in /usr/local.

Build of Efreet

to be continued