summary refs log blame commit diff
path: root/pkgs/desktops/enlightenment/efl.nix
blob: 5e3763c9a6ddf68fddc9f379fa174b2e90ada505 (plain) (tree)
1
2
3
4
5
6
7
8
9
10






                                                                      
  

                         
                
                     
 
                  
                                                                                           
                                                                    

    



                       
 
























                              
 









































                                
 
                                                                                                                    

















                                             
 

                                 



                                                 




                                                                                    
                   
                                                                       
                       

     

                                                                                   




                                                                                               


                                                            
     
 





                                                                             
                                

          
                                                       
                                          

                                           
                                                                             

    
{ stdenv, fetchurl, pkgconfig, SDL, SDL2, alsaLib, bullet, curl, dbus,
  doxygen, expat, fontconfig, freetype, fribidi, ghostscript, giflib,
  glib, gst_all_1, gtk3, harfbuzz, jbig2dec, libGL, libdrm, libinput,
  libjpeg, libpng, libpulseaudio, libraw, librsvg, libsndfile,
  libspectre, libtiff, libwebp, libxkbcommon, luajit, lz4, mesa,
  openjpeg, openssl, poppler, python27Packages, systemd, udev,
  utillinux, writeText, xineLib, xorg, zlib
}:

stdenv.mkDerivation rec {
  pname = "efl";
  version = "1.22.5";

  src = fetchurl {
    url = "http://download.enlightenment.org/rel/libs/${pname}/${pname}-${version}.tar.xz";
    sha256 = "1cjk56z0whpzcqwg3xdq23kyp1g83xa67m9dlp7ywmb36bn4ca59";
  };

  nativeBuildInputs = [
    gtk3
    pkgconfig
  ];

  buildInputs = [
    SDL
    fontconfig
    freetype
    giflib
    glib
    gst_all_1.gst-libav
    gst_all_1.gst-plugins-base
    gst_all_1.gst-plugins-good
    gst_all_1.gstreamer
    libGL
    libpng
    libpulseaudio
    libsndfile
    libtiff
    lz4
    mesa
    openssl
    systemd
    udev
    xorg.libX11
    xorg.libXcursor
    xorg.xorgproto
    zlib
  ];

  propagatedBuildInputs = [
    SDL2
    alsaLib
    bullet
    curl
    dbus
    dbus
    doxygen
    expat
    fribidi
    ghostscript
    harfbuzz
    jbig2dec
    libdrm
    libinput
    libjpeg
    libraw
    librsvg
    libspectre
    libwebp
    libxkbcommon
    luajit
    openjpeg
    poppler
    python27Packages.dbus-python
    utillinux
    xineLib
    xorg.libXScrnSaver
    xorg.libXcomposite
    xorg.libXdamage
    xorg.libXext
    xorg.libXfixes
    xorg.libXi
    xorg.libXinerama
    xorg.libXp
    xorg.libXrandr
    xorg.libXrender
    xorg.libXtst
    xorg.libxcb
    xorg.libxkbfile
    xorg.xcbutilkeysyms
  ];

  # ac_ct_CXX must be set to random value, because then it skips some magic which does alternative searching for g++
  configureFlags = [
    "--enable-sdl"
    "--enable-drm"
    "--enable-elput"
    "--with-opengl=full"
    "--enable-image-loader-jp2k"
    "--enable-xinput22"
    "--enable-multisense"
    "--enable-liblz4"
    "--enable-systemd"
    "--enable-image-loader-webp"
    "--enable-harfbuzz"
    "--enable-xine"
    "--enable-fb"
    "--disable-tslib"
    "--with-systemdunitdir=$out/systemd/user"
    "ac_ct_CXX=foo"
  ];

  patches = [ ./efl-elua.patch ];

  postPatch = ''
    patchShebangs src/lib/elementary/config_embed
  '';

  # bin/edje_cc creates $HOME/.run, which would break build of reverse dependencies.
  setupHook = writeText "setupHook.sh" ''
    export HOME="$TEMPDIR"
  '';

  preConfigure = ''
    export LD_LIBRARY_PATH="$(pwd)/src/lib/eina/.libs:$LD_LIBRARY_PATH"
    source "$setupHook"
  '';

  NIX_CFLAGS_COMPILE = [ "-DluaL_reg=luaL_Reg" ]; # needed since luajit-2.1.0-beta3

  postInstall = ''
    substituteInPlace "$out/share/elua/core/util.lua" --replace '$out' "$out"
    modules=$(for i in "$out/include/"*/; do printf ' -I''${includedir}/'`basename $i`; done)
    substituteInPlace "$out/lib/pkgconfig/efl.pc" --replace 'Cflags: -I''${includedir}/efl-1' \
      'Cflags: -I''${includedir}/eina-1/eina'"$modules"

    # build icon cache
    gtk-update-icon-cache "$out"/share/icons/Enlightenment-X
  '';

  # EFL applications depend on libcurl, although it is linked at
  # runtime by hand in code (it is dlopened).
  postFixup = ''
    patchelf --add-needed ${curl.out}/lib/libcurl.so $out/lib/libecore_con.so
  '';

  enableParallelBuilding = true;

  meta = {
    description = "Enlightenment foundation libraries";
    homepage = https://enlightenment.org/;
    platforms = stdenv.lib.platforms.linux;
    license = stdenv.lib.licenses.lgpl3;
    maintainers = with stdenv.lib.maintainers; [ matejc tstrobel ftrvxmtrx ];
  };
}