Page MenuHomePhabricator

Windows
Updated 5 Days AgoPublic

Using EWPI

this section describes the installation of the dependencies using EWPI. After this section, another way to build the EFL is by using win-builds, but that way is discouraged (too old compiler and dependencies). To install EWPI, you need the dependencies :

  • mingw-w64 toolchain
  • make
  • cmake
  • python
  • meson
  • ninja
  • yasm (on UNIX)
  • nasm (on UNIX)
  • gperf
  • wget
  • flex
  • bison

Prerequisites on Windows

  1. Install MSYS2 (steps 1 to 6)
  2. run "pacman -S git gettext-devel make cmake wget gperf python bison mingw-w64-x86_64-toolchain mingw-w64-x86_64-ninja mingw-w64-x86_64-python3-pip mingw-w64-i686-toolchain mingw-w64-i686-ninja mingw-w64-i686-python3-pip"
  3. run "pip3 install meson"
  4. rename ar, ranlib, strip and windres with host :
    1. for 32bits toolchain, open MSYS2 MinGW 32bits, then :
      1. cp /mingw32/bin/ar.exe /mingw32/bin/i686-w64-mingw32-ar.exe
      2. cp /mingw32/bin/dlltool.exe /mingw32/bin/i686-w64-mingw32-dlltool.exe
      3. cp /mingw32/bin/i686-w64-mingw32-gcc-nm.exe /mingw32/bin/i686-w64-mingw32-nm.exe
      4. cp /mingw32/bin/ranlib.exe /mingw32/bin/i686-w64-mingw32-ranlib.exe
      5. cp /mingw32/bin/strip.exe /mingw32/bin/i686-w64-mingw32-strip.exe
      6. cp /mingw32/bin/windres.exe /mingw32/bin/i686-w64-mingw32-windres.exe
    2. for 64bits toolchain, open MSYS2 MinGW 64bits, then :
      1. cp /mingw64/bin/ar.exe /mingw64/bin/x86_64-w64-mingw32-ar.exe
      2. cp /mingw64/bin/dlltool.exe /mingw64/bin/x86_64-w64-mingw32-dlltool.exe
      3. cp /mingw64/bin/x86_64-w64-mingw32-gcc-nm.exe /mingw64/bin/x86_64-w64-mingw32-nm.exe
      4. cp /mingw64/bin/ranlib.exe /mingw64/bin/x86_64-w64-mingw32-ranlib.exe
      5. cp /mingw64/bin/strip.exe /mingw64/bin/x86_64-w64-mingw32-strip.exe
      6. cp /mingw64/bin/windres.exe /mingw64/bin/x86_64-w64-mingw32-windres.exe

Prerequisites on Unix

  1. Use your package manager to install the dependencies above:
    1. sudo dnf install gcc-c++ git make cmake wget gperf python bison flex nasm yasm mingw64-pkg-config mingw64-gcc mingw64-gcc-c++ ninja-build gettext-devel mingw-w64-tools
  2. run "pip3 install meson"

Compilation

  1. clone EWPI : git clone https://github.com/vtorri/ewpi.git
  2. cd ewpi
  3. compile ewpi : gcc -std=c99 -o ewpi ewpi.c ewpi_map.c
  4. To install 32 bits dependencies, open MSYS2 MinGW 32bits and : ./ewpi --prefix=/opt/ewpi_32 --host=i686-w64-mingw32
  5. To install 64 bits dependencies, open MSYS2 MinGW 64bits and : ./ewpi --prefix=/opt/ewpi_64 --host=x86_64-w64-mingw32
  6. To know how to use ewpi : ./ewpi --help

Change the installation directory /opt/ewpi_** with anything you want

Usage with autotools

So the EFL dependencies are installed in the prefix you mentioned. Let say it is /opt/ewpi_64. To compile the EFL :

  1. clone the EFL git repo and enters it
  2. export PATH=/opt/ewpi_64/bin:$PATH
  3. export PKG_CONFIG_PATH=/opt/ewpi_64/lib/pkgconfig
  4. export CPPFLAGS="-I/opt/ewpi_64/include -DECORE_WIN32_WIP_POZEFLKSD"
  5. export LDFLAGS=-L/opt/ewpi_64/lib
  6. autoreconf -vif
  7. CFLAGS="-g3 -ggdb3 -Og -pipe" CXXFLAGS="-g3 -ggdb3 -Og" ./configure --prefix=/opt/efl_64 --host=x86_64-mingw32 --disable-static --enable-image-loader-webp --enable-harfbuzz --enable-sdl --disable-pulseaudio --enable-gstreamer1 --enable-physics --disable-poppler --disable-spectre --disable-libraw --disable-librsvg --with-tests=regular --disable-g-main-loop --with-glib=no
  8. make

Usage with meson

for now, the build with meson is not working but the command to build the EFL is a bit tricky. Here it is :

  1. export PATH=/opt/ewpi_64/bin:$PATH
  2. export PKG_CONFIG_PATH=/opt/ewpi_64/lib/pkgconfig
  3. export EFL_RUN_IN_TREE=1
  4. export CPPFLAGS="-I/opt/ewpi_64/include -DECORE_WIN32_WIP_POZEFLKSD"
  5. export LDFLAGS=-L/opt/ewpi_64/lib
  6. mkdir builddir && cd builddir
  7. meson .. --prefix=/opt/efl_meson --buildtype=debug --default-library shared -Dglib=false -Dsystemd=false -Dpulseaudio=false -Davahi=false -Dv4l2=false -Dlibmount=false -Deeze=false -Dsdl=true -Dx11=false -Dxinput2=false -Dtslib=false -Devas-loaders-disabler='pdf','ps','raw','svg' -Dopengl=none -Dharfbuzz=true -Dpixman=true -Dembedded-lz4=false
  8. ninja
  9. unset EFL_RUN_IN_TREE

Using win-builds

For users

The win-builds project provides a package manager and packages for the EFL along with dependencies (from the toolchain to elementary). All libraries are provided as shared objects.

It is the easiest and advised way to get things installed and working.

For developers

The best way to get EFL for Windows is to cross compile them on Linux using win-builds. Install the packages from there and get the EFL and Elementary sources either:

  • from git at git://git.enlightenment.org/core/efl.git and git://git.enlightenment.org/core/elementary.git
  • from the Enlightenment download page

Then get the Makefile with all the pre-set configuration options for efl:

.

Use win-builds packages without yypkg

Some distros package x86_64-w64-mingw32-gcc, such as ArchLinux. There, instead of installing win-build's package manager (which requires to be compiled using ocaml), one can download files manually or use the following automation script: https://github.com/barbieri/barbieri-playground/tree/master/efl-win-build

It assumes you have a cross compiler x86_64-w64-mingw32-gcc and a native eolian_gen in $PATH, then will install stuff to ~/efl-windows_64, as well as generate a helper script ~/efl-windows_64/compile-efl.sh

Build and install EFL/Elementary natively

In this section, we will install MSYS2 and Win-Builds 1.5 in D:\MSYS2.

MSYS2 installation

  • Download MSYS2 here, choosing the target you want (either i686 or x86_64). The x86_64 target will be installed in that tutorial, but the i686 one is exactly the same (notes will be added for its installation). Do not launch MSYS2 when installation is finished. Launch instead in the Start menu "MSYS2 MinGW 64-bit".
  • Follow instructions 1. to 7 on the MSYS2 website. (Instruction 8. is useless) with the 3 following modifications:
    • Instructions 3.: The installation directory is D:\MSYS2.
    • Instruction 6.: The command will be pacman -Syu (remove catgets and libcatgets).
    • Instruction 7.: The command will be pacman -S cvs git make autoconf automake libtool gettext-devel.

Packages installation

We use Win-Builds 1.5 package manager to install necessary packages to build EFL.

  • Download Win-Builds here.
  • In the GUI window, select:
    • Cygwin or MSYS
    • x86_64 (if you want i686, let the selection as is)
    • Use the mirror that is proposed: http://win-builds.org/1.5.0
    • The installation directory is the one chosen for MSYS2 in the previous paragraph, instruction 3. of the MSYS2 instructions (for this tutorial, D:\MSYS2). By default, MinGW-64 will be installed in D:\MSYS2\opt\windows_64 (or D:\MSYS2\opt\windows_32 for i686) and the binaries in D:\MSYS2\opt\windows_64\bin.
    • Click on OK.
    • In the new UI window, instead of Install for the EFL and Elementary, select with the mouse As is. The EFL and Elementary will not be installed and will not confict with other EFL and Elementary installations -Click on Process
  • Post installation for 64 bits: in MSYS2 terminal, open /etc/profile with your favorite editor, and at the end:
export PKG_CONFIG_PATH=/opt/efl_64/lib/pkgconfig:/opt/windows_64/lib64/pkgconfig
export PATH=/opt/efl_64/bin:/opt/windows_64/bin:$PATH
export ACLOCAL_PATH="/opt/windows_64/share/aclocal/"
  • Post installation for 32 bits: in MSYS2 terminal, open /etc/profile with your favorite editor, and at the end:
export PKG_CONFIG_PATH=/opt/efl_32/lib/pkgconfig:/opt/windows_32/lib/pkgconfig
export PATH=/opt/efl_32/bin:/opt/windows_32/bin:$PATH
export ACLOCAL_PATH="/opt/windows_32/share/aclocal/"
  • Close the terminal and launch a new one.

EFL Installation

git clone https://git.enlightenment.org/core/efl.git
  • Load win-builds environment for x86_64 architecture
. /opt/windows_64/bin/win-builds-switch 64
  • Define the following environment variables for 64 bits:
PREFIX=/opt/efl_64
HOST=x86_64-w64-mingw32
DISABLE_STATIC="--disable-static"
  • Define the following environment variables for 32 bits:
PREFIX=/opt/efl_32
HOST=i686-w64-mingw32
DISABLE_STATIC="--disable-static"
  • Run 'autoreconf -vif', then 'configure' with the following options:
CFLAGS="-g3 -ggdb3 -Og" CXXFLAGS="-g3 -ggdb3 -Og" CPPFLAGS=-DECORE_WIN32_WIP_POZEFLKSD ./configure --prefix=/opt/efl_x86_64 --host=x86_64-w64-mingw32 --disable-static --with-tests=regular --with-crypto=openssl --disable-harfbuzz --disable-gstreamer1 --disable-gstreamer --disable-physics --disable-libmount --disable-valgrind --enable-lua-old --disable-avahi --disable-spectre --disable-libraw --disable-librsvg --disable-pulseaudio --disable-cxx-bindings
  • Run 'make -j4' then 'make install'
Last Author
vtorri
Last Edited
Fri, Jun 21, 7:34 AM
Projects
Subscribers
gamersalpha, lauromoura