diff --git a/pkgs/development/libraries/fltk/1.4.nix b/pkgs/development/libraries/fltk/1.4.nix index 2397e9ac24ad..ff8f8734926b 100644 --- a/pkgs/development/libraries/fltk/1.4.nix +++ b/pkgs/development/libraries/fltk/1.4.nix @@ -25,19 +25,34 @@ withCairo ? true, cairo, - withPango ? stdenv.hostPlatform.isLinux, + # pango depends on Xft, and implicitly enables cairo. + # So only enable pango if cairo is enabled too. + withPango ? withXorg && withCairo, pango, withDocs ? true, doxygen, graphviz, + withXorg ? stdenv.hostPlatform.isLinux, + + withWayland ? stdenv.hostPlatform.isLinux && withCairo, + wayland, + wayland-protocols, + libxkbcommon, + wayland-scanner, + withExamples ? (stdenv.buildPlatform == stdenv.hostPlatform), + + nix-update-script, }: -let - onOff = value: if value then "ON" else "OFF"; -in +# pango support depends on Xft +assert withPango -> withXorg; + +# wayland support depends on cairo +assert withWayland -> withCairo; + stdenv.mkDerivation (finalAttrs: { pname = "fltk"; version = "1.4.4"; @@ -62,6 +77,9 @@ stdenv.mkDerivation (finalAttrs: { cmake pkg-config ] + ++ lib.optionals withWayland [ + wayland-scanner + ] ++ lib.optionals withDocs [ doxygen graphviz @@ -86,6 +104,8 @@ stdenv.mkDerivation (finalAttrs: { ] ++ lib.optionals stdenv.hostPlatform.isLinux [ freetype + ] + ++ lib.optionals withXorg [ libX11 libXext libXinerama @@ -94,6 +114,11 @@ stdenv.mkDerivation (finalAttrs: { libXft libXrender ] + ++ lib.optionals withWayland [ + wayland + wayland-protocols + libxkbcommon + ] ++ lib.optionals withCairo [ cairo ] @@ -103,43 +128,45 @@ stdenv.mkDerivation (finalAttrs: { cmakeFlags = [ # Common - "-DFLTK_BUILD_SHARED_LIBS=${onOff (!stdenv.hostPlatform.isStatic)}" - "-DFLTK_USE_SYSTEM_LIBDECOR=ON" - "-DFLTK_USE_SYSTEM_LIBJPEG=ON" - "-DFLTK_USE_SYSTEM_LIBPNG=ON" - "-DFLTK_USE_SYSTEM_ZLIB=ON" + (lib.cmakeBool "FLTK_BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic)) + (lib.cmakeBool "FLTK_USE_SYSTEM_LIBDECOR" true) + (lib.cmakeBool "FLTK_USE_SYSTEM_LIBJPEG" true) + (lib.cmakeBool "FLTK_USE_SYSTEM_LIBPNG" true) + (lib.cmakeBool "FLTK_USE_SYSTEM_ZLIB" true) # X11 - "-DFLTK_USE_XINERAMA=${onOff stdenv.hostPlatform.isLinux}" - "-DFLTK_USE_XFIXES=${onOff stdenv.hostPlatform.isLinux}" - "-DFLTK_USE_XCURSOR=${onOff stdenv.hostPlatform.isLinux}" - "-DFLTK_USE_XFT=${onOff stdenv.hostPlatform.isLinux}" - "-DFLTK_USE_XRENDER=${onOff stdenv.hostPlatform.isLinux}" + (lib.cmakeBool "FLTK_USE_XINERAMA" withXorg) + (lib.cmakeBool "FLTK_USE_XFIXES" withXorg) + (lib.cmakeBool "FLTK_USE_XCURSOR" withXorg) + (lib.cmakeBool "FLTK_USE_XFT" withXorg) + (lib.cmakeBool "FLTK_USE_XRENDER" withXorg) + + # Wayland + (lib.cmakeBool "FLTK_BACKEND_WAYLAND" withWayland) # GL - "-DFLTK_BUILD_GL=${onOff withGL}" - "-DOpenGL_GL_PREFERENCE=GLVND" + (lib.cmakeBool "FLTK_BUILD_GL" withGL) # Cairo - "-DFLTK_OPTION_CAIRO_WINDOW=${onOff withCairo}" - "-DFLTK_OPTION_CAIRO_EXT=${onOff withCairo}" + (lib.cmakeBool "FLTK_OPTION_CAIRO_WINDOW" withCairo) + (lib.cmakeBool "FLTK_OPTION_CAIRO_EXT" withCairo) # Pango - "-DFLTK_USE_PANGO=${onOff withPango}" + (lib.cmakeBool "FLTK_USE_PANGO" withPango) # Examples & Tests - "-DFLTK_BUILD_EXAMPLES=${onOff withExamples}" - "-DFLTK_BUILD_TEST=${onOff withExamples}" + (lib.cmakeBool "FLTK_BUILD_EXAMPLES" withExamples) + (lib.cmakeBool "FLTK_BUILD_TEST" withExamples) # Docs - "-DFLTK_BUILD_HTML_DOCS=${onOff withDocs}" - "-DFLTK_BUILD_PDF_DOCS=OFF" - "-DFLTK_INSTALL_HTML_DOCS=${onOff withDocs}" - "-DFLTK_INSTALL_PDF_DOCS=OFF" - "-DFLTK_INCLUDE_DRIVER_DOCS=${onOff withDocs}" + (lib.cmakeBool "FLTK_BUILD_HTML_DOCS" withDocs) + (lib.cmakeBool "FLTK_INSTALL_HTML_DOCS" withDocs) + (lib.cmakeBool "FLTK_INCLUDE_DRIVER_DOCS" withDocs) + (lib.cmakeBool "FLTK_BUILD_PDF_DOCS" false) + (lib.cmakeBool "FLTK_INSTALL_PDF_DOCS" false) # RPATH of binary /nix/store/.../bin/... contains a forbidden reference to /build/ - "-DCMAKE_SKIP_BUILD_RPATH=ON" + (lib.cmakeBool "CMAKE_SKIP_BUILD_RPATH" true) ]; postBuild = lib.optionalString withDocs '' @@ -174,6 +201,13 @@ stdenv.mkDerivation (finalAttrs: { --replace-fail "/$out/" "/" ''; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "release-(1\\.4\\.[0-9.]+)" + ]; + }; + meta = { description = "C++ cross-platform lightweight GUI library"; homepage = "https://www.fltk.org"; diff --git a/pkgs/development/libraries/fltk/default.nix b/pkgs/development/libraries/fltk/default.nix index 433c071a52d7..2b2242107d8a 100644 --- a/pkgs/development/libraries/fltk/default.nix +++ b/pkgs/development/libraries/fltk/default.nix @@ -25,29 +25,27 @@ withCairo ? true, cairo, - withPango ? false, - pango, - withDocs ? true, doxygen, graphviz, + withXorg ? stdenv.hostPlatform.isLinux, + withExamples ? (stdenv.buildPlatform == stdenv.hostPlatform), withShared ? true, + + nix-update-script, }: -let - onOff = value: if value then "ON" else "OFF"; -in stdenv.mkDerivation (finalAttrs: { pname = "fltk"; - version = "1.3.8"; + version = "1.3.11"; src = fetchFromGitHub { owner = "fltk"; repo = "fltk"; rev = "release-${finalAttrs.version}"; - hash = "sha256-OQWyOV3EeyFhwFg/eOX66QtFUxaDR1x4ZyHnZHmzhN8="; + hash = "sha256-aN0WdHDjxb9O4OgTfBncIj12tRYfeltKev6pgSMu6/E="; }; outputs = [ "out" ] ++ lib.optional withExamples "bin" ++ lib.optional withDocs "doc"; @@ -91,6 +89,8 @@ stdenv.mkDerivation (finalAttrs: { ] ++ lib.optionals stdenv.hostPlatform.isLinux [ freetype + ] + ++ lib.optionals withXorg [ libX11 libXext libXinerama @@ -101,50 +101,44 @@ stdenv.mkDerivation (finalAttrs: { ] ++ lib.optionals withCairo [ cairo - ] - ++ lib.optionals withPango [ - pango ]; cmakeFlags = [ # Common - "-DOPTION_BUILD_SHARED_LIBS=${onOff withShared}" - "-DOPTION_USE_SYSTEM_ZLIB=ON" - "-DOPTION_USE_SYSTEM_LIBJPEG=ON" - "-DOPTION_USE_SYSTEM_LIBPNG=ON" + (lib.cmakeBool "OPTION_BUILD_SHARED_LIBS" withShared) + (lib.cmakeBool "OPTION_USE_SYSTEM_ZLIB" true) + (lib.cmakeBool "OPTION_USE_SYSTEM_LIBJPEG" true) + (lib.cmakeBool "OPTION_USE_SYSTEM_LIBPNG" true) # X11 - "-DOPTION_USE_XINERAMA=${onOff stdenv.hostPlatform.isLinux}" - "-DOPTION_USE_XFIXES=${onOff stdenv.hostPlatform.isLinux}" - "-DOPTION_USE_XCURSOR=${onOff stdenv.hostPlatform.isLinux}" - "-DOPTION_USE_XFT=${onOff stdenv.hostPlatform.isLinux}" - "-DOPTION_USE_XRENDER=${onOff stdenv.hostPlatform.isLinux}" - "-DOPTION_USE_XDBE=${onOff stdenv.hostPlatform.isLinux}" + (lib.cmakeBool "OPTION_USE_XINERAMA" withXorg) + (lib.cmakeBool "OPTION_USE_XFIXES" withXorg) + (lib.cmakeBool "OPTION_USE_XCURSOR" withXorg) + (lib.cmakeBool "OPTION_USE_XFT" withXorg) + (lib.cmakeBool "OPTION_USE_XRENDER" withXorg) + (lib.cmakeBool "OPTION_USE_XDBE" withXorg) # GL - "-DOPTION_USE_GL=${onOff withGL}" + (lib.cmakeBool "OPTION_USE_GL" withGL) "-DOpenGL_GL_PREFERENCE=GLVND" # Cairo - "-DOPTION_CAIRO=${onOff withCairo}" - "-DOPTION_CAIROEXT=${onOff withCairo}" - - # Pango - "-DOPTION_USE_PANGO=${onOff withPango}" + (lib.cmakeBool "OPTION_CAIRO" withCairo) + (lib.cmakeBool "OPTION_CAIROEXT" withCairo) # Examples & Tests - "-DFLTK_BUILD_EXAMPLES=${onOff withExamples}" - "-DFLTK_BUILD_TEST=${onOff withExamples}" + (lib.cmakeBool "FLTK_BUILD_EXAMPLES" withExamples) + (lib.cmakeBool "FLTK_BUILD_TEST" withExamples) # Docs - "-DOPTION_BUILD_HTML_DOCUMENTATION=${onOff withDocs}" - "-DOPTION_BUILD_PDF_DOCUMENTATION=OFF" - "-DOPTION_INSTALL_HTML_DOCUMENTATION=${onOff withDocs}" - "-DOPTION_INSTALL_PDF_DOCUMENTATION=OFF" - "-DOPTION_INCLUDE_DRIVER_DOCUMENTATION=${onOff withDocs}" + (lib.cmakeBool "OPTION_BUILD_HTML_DOCUMENTATION" withDocs) + (lib.cmakeBool "OPTION_INSTALL_HTML_DOCUMENTATION" withDocs) + (lib.cmakeBool "OPTION_INCLUDE_DRIVER_DOCUMENTATION" withDocs) + (lib.cmakeBool "OPTION_BUILD_PDF_DOCUMENTATION" false) + (lib.cmakeBool "OPTION_INSTALL_PDF_DOCUMENTATION" false) # RPATH of binary /nix/store/.../bin/... contains a forbidden reference to /build/ - "-DCMAKE_SKIP_BUILD_RPATH=ON" + (lib.cmakeBool "CMAKE_SKIP_BUILD_RPATH" true) ]; preBuild = lib.optionalString (withCairo && withShared && stdenv.hostPlatform.isDarwin) '' @@ -185,9 +179,16 @@ stdenv.mkDerivation (finalAttrs: { postFixup = '' substituteInPlace $out/bin/fltk-config \ - --replace "/$out/" "/" + --replace-fail "/$out/" "/" ''; + passthru.updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "release-(1\\.3\\.[0-9.]+)" + ]; + }; + meta = { description = "C++ cross-platform lightweight GUI library"; homepage = "https://www.fltk.org"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2d92634cb035..ec8fe1bcf602 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -7451,7 +7451,6 @@ with pkgs; fltk13-minimal = fltk13.override { withGL = false; withCairo = false; - withPango = false; withExamples = false; withDocs = false; };