{ builtins , stdenv , cd , fetchurl , lsb-release , pkg-config , gtk2 , gtk3 , webkitgtk_4_1 , libsoup_3 , im , libGL , libGLU , lua , lib , ftgl-tecgraf , withGTK3 ? false }: let makePc = import ./make-pc.nix { inherit lib builtins; }; in stdenv.mkDerivation rec { pname = "iup"; version = "3.32"; src = fetchurl { url = "mirror://sourceforge/iup/${version}/Docs%20and%20Sources/iup-${version}_Sources.tar.gz"; sha256 = "sha256-hx4X/KD7BNChO2jS/bmINZYzeCbqRMklTKOOPqu2pqU="; }; nativeBuildInputs = [ lsb-release pkg-config ]; buildInputs = [ (if withGTK3 then gtk3 else gtk2) libGL libGLU lua ftgl-tecgraf ] ++ lib.optional withGTK3 [ webkitgtk_4_1 libsoup_3 ]; propagatedBuildInputs = [ cd im ]; postPatch = '' sed -i 's/\biupvled\b//g' Makefile '' + lib.optionalString withGTK3 '' substituteInPlace srcweb/config.mak \ --replace-fail "\$(GTK)/include/webkitgtk-4.1" "${webkitgtk_4_1.dev}/include/webkitgtk-4.1" \ --replace-fail "\$(GTK)/include/libsoup-3.0" "${libsoup_3.dev}/include/libsoup-3.0" '' + lib.optionalString (!withGTK3) '' sed -i 's/\biupweb\b//g' Makefile sed -i 's/\biupluaweb\b//g' srclua5/Makefile ''; makeFlags = [ "NO_DEPEND=Yes" "USE_PKGCONFIG=Yes" "USE_LUA_VERSION=52" "GTK_DEFAULT=Yes" "LUA_SFX=" "CD_LIB=${cd}/lib" "IM_LIB=${im}/lib" "LUA_LIB=${lua}/lib" "LUA_INC=${lua}/include" "FTGL_LIB=${ftgl-tecgraf}/lib" "FTGL_INC=${ftgl-tecgraf}/include" ] ++ (if withGTK3 then [ "USE_GTK3=Yes" ] else [ "USE_GTK2=Yes" ]); NIX_CFLAGS_COMPILE = '' -Wno-implicit-function-declaration -Wno-incompatible-pointer-types ''; iupPc = builtins.toFile "iup.pc" (makePc "iup" "A portable toolkit for building graphical user interfaces" version (if withGTK3 then "gtk+-3.0" else "gtk+-2.0") ); iupglPc = builtins.toFile "iupgl.pc" (makePc "iupgl" "A portable toolkit for building graphical user interfaces (OpenGL support)" version "gl glu" ); iupcdPc = builtins.toFile "iupcd.pc" (makePc "iupcd" "A portable toolkit for building graphical user interfaces (CD support)" version "iup cd" ); iupcontrolsPc = builtins.toFile "iupcontrols.pc" (makePc "iupcontrols" "A portable toolkit for building graphical user interfaces (extra widgets)" version "iupcd" ); iupPlotPc = builtins.toFile "iup_plot.pc" (makePc "iup_plot" "A portable toolkit for building graphical user interfaces (plotting support)" version "iupcd" ); iupimPc = builtins.toFile "iupim.pc" (makePc "iupim" "A portable toolkit for building graphical user interfaces (IM support)" version "iup im" ); iupimglibPc = builtins.toFile "iupimglib.pc" (makePc "iupimglib" "A portable toolkit for building graphical user interfaces (image support)" version "iup" ); iupwebPc = builtins.toFile "iupweb.pc" (makePc "iupweb" "A portable toolkit for building graphical user interfaces (web view widget)" version "webkit2gtk-4.1" ); installPhase = '' runHook preInstall mkdir -p $out/{bin,etc,include,lib/pkgconfig,share/lua/5.2} mkdir -p $out/share/lua/5.2/{ctrl,elem,gl,lh,scripter} cp -v lib/Linux*/*.so $out/lib/ cp -v lib/Linux*/*.a $out/lib/ || true cp -vr include/*.h $out/include/ cp -v lib/Linux*/Lua*/*.so $out/lib/ cp -v lib/Linux*/Lua*/*.a $out/lib/ || true cp -v srclua5/*.lua "$out/share/lua/5.2/" cp -v srclua5/ctrl/*.lua "$out/share/lua/5.2/ctrl/" cp -v srclua5/elem/*.lua "$out/share/lua/5.2/elem/" cp -v srclua5/gl/*.lua "$out/share/lua/5.2/gl/" cp -v srclua5/lh/*.lh "$out/share/lua/5.2/lh/" cp -v srclua5/scripter/*.lua "$out/share/lua/5.2/scripter/" ln -fs $out/lib/libiuplua52.so $out/share/lua/5.2/iuplua.so ln -fs $out/lib/libiupluacd52.so $out/share/lua/5.2/iupluacd.so ln -fs $out/lib/libiupluacontrols52.so $out/share/lua/5.2/iupluacontrols.so ln -fs $out/lib/libiupluagl52.so $out/share/lua/5.2/iupluagl.so ln -fs $out/lib/libiupluaglcontrols52.so $out/share/lua/5.2/iupluaglcontrols.so ln -fs $out/lib/libiupluaim52.so $out/share/lua/5.2/iupluaim.so ln -fs $out/lib/libiuplua_plot52.so $out/share/lua/5.2/iuplua_plot.so ln -fs $out/lib/libiuplua_mglplot52.so $out/share/lua/5.2/iuplua_mglplot.so ln -fs $out/lib/libiuplua_scintilla52.so $out/share/lua/5.2/iuplua_scintilla.so ln -fs $out/lib/libiupluascripterdlg52.so $out/share/lua/5.2/iupluascripterdlg.so ln -fs $out/lib/libiupluaimglib52.so $out/share/lua/5.2/iupluaimglib.so cp -v ${iupPc} $out/lib/pkgconfig/iup.pc cp -v ${iupglPc} $out/lib/pkgconfig/iupgl.pc cp -v ${iupcdPc} $out/lib/pkgconfig/iupcd.pc cp -v ${iupcontrolsPc} $out/lib/pkgconfig/iupcontrols.pc cp -v ${iupPlotPc} $out/lib/pkgconfig/iup_plot.pc cp -v ${iupimPc} $out/lib/pkgconfig/iupim.pc cp -v ${iupimglibPc} $out/lib/pkgconfig/iupimglib.pc cp -vr bin/Linux*/* $out/bin/ chmod +x $out/bin/* cp -r etc/* $out/etc '' + lib.optionalString withGTK3 '' ln -fs $out/lib/libiupluaweb52.so $out/share/lua/5.2/iupluaweb.so cp -v ${iupwebPc} $out/lib/pkgconfig/iupweb.pc '' + '' runHook postInstall ''; meta = with lib; { description = "A portable toolkit for building graphical user interfaces"; license = licenses.mit; maintainers = [ eko5z ]; platforms = with platforms; gnu ++ linux ++ darwin; }; }