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







                                                                     
  

                         
                
                     
 
                  
                                                                                           
                                                                    

    
                       

         

             
         
    
 

                 
         







                              
        














                   
 

























                                














                       
 








                                                                       
    
 

                                 

                                                 



                                                                                                                                                 

     




                                                                                    
                   


                                                                                        
                       

     
                                                                               
 
                  
                              
                                                                             

                                                               
                                                                                             


                                                                 


                                                            
     
 
                
                                                                                                     


                                                                             
          
                                                       
                                          
                                        

                                                                                     

    
{ stdenv, fetchurl, meson, ninja, pkgconfig, SDL, SDL2, alsaLib,
  avahi, bullet, check, curl, dbus, doxygen, expat, fontconfig,
  freetype, fribidi, ghostscript, giflib, glib, gst_all_1, gtk3,
  harfbuzz, ibus, 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,
  xorg, zlib
}:

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

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

  nativeBuildInputs = [
    meson
    ninja
    gtk3
    pkgconfig
    check
  ];

  buildInputs = [
    SDL
    avahi
    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
    ibus
    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
    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
  ];

  mesonFlags = [
    "--buildtype=release"
    "-D build-tests=false" # disable build tests, which are not working
    "-D drm=true"
    "-D embedded-lz4=false"
    "-D evas-loaders-disabler=json"
    "-D fb=true"
    "-D opengl=full"
    "-D sdl=true"
  ];

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

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

    # fix destination of systemd unit and dbus service
    substituteInPlace systemd-services/meson.build --replace "dep.get_pkgconfig_variable('systemduserunitdir')" "'$out/systemd/user'"
    substituteInPlace dbus-services/meson.build --replace "dep.get_pkgconfig_variable('session_bus_services_dir')" "'$out/share/dbus-1/services'"
  '';

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

  preConfigure = ''
    # allow ecore_con to find libcurl.so, which is a runtime dependency (it is dlopened)
    export LD_LIBRARY_PATH="${curl.out}/lib:$LD_LIBRARY_PATH"

    source "$setupHook"
  '';

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

  postInstall = ''
    # fix use of $out variable
    substituteInPlace "$out/share/elua/core/util.lua" --replace '$out' "$out"

    # add all module include dirs to the Cflags field in efl.pc
    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
  '';

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

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