parent
05aa9f6b1c
commit
9fffabf9ee
@ -1,52 +1,5 @@ |
||||
{ lib, stdenv, fetchurl, pkg-config, xlibsWrapper, xorgproto, libXi |
||||
, freeglut, libGLU, libGL, libjpeg, zlib, libXft, libpng |
||||
, libtiff, freetype, Cocoa, AGL, GLUT |
||||
}: |
||||
|
||||
let |
||||
version = "1.4.x-r13121"; |
||||
in |
||||
|
||||
stdenv.mkDerivation { |
||||
pname = "fltk"; |
||||
inherit version; |
||||
|
||||
src = fetchurl { |
||||
url = "https://www.fltk.org/pub/fltk/snapshots/fltk-${version}.tar.gz"; |
||||
sha256 = "1v8wxvxcbk99i82x2v5fpqg5vj8n7g8a38g30ry7nzcjn5sf3r63"; |
||||
}; |
||||
|
||||
patches = lib.optionals stdenv.isDarwin [ ./nsosv.patch ]; |
||||
|
||||
nativeBuildInputs = [ pkg-config ]; |
||||
buildInputs = [ libGLU libGL libjpeg zlib libpng libXft ] |
||||
++ lib.optional stdenv.isDarwin [ AGL Cocoa GLUT ]; |
||||
|
||||
propagatedBuildInputs = [ xorgproto ] |
||||
++ (if stdenv.isDarwin |
||||
then [ freetype libtiff ] |
||||
else [ xlibsWrapper libXi freeglut ]); |
||||
|
||||
configureFlags = [ |
||||
"--enable-gl" |
||||
"--enable-largefile" |
||||
"--enable-shared" |
||||
"--enable-threads" |
||||
"--enable-xft" |
||||
]; |
||||
|
||||
preConfigure = '' |
||||
make clean |
||||
rm VERSION |
||||
''; |
||||
|
||||
enableParallelBuilding = true; |
||||
|
||||
meta = with lib; { |
||||
description = "A C++ cross-platform lightweight GUI library"; |
||||
homepage = "https://www.fltk.org"; |
||||
platforms = platforms.linux ++ platforms.darwin; |
||||
license = licenses.gpl2; |
||||
}; |
||||
|
||||
import ./common.nix rec { |
||||
version = "1.4.x-2021-07-04"; |
||||
rev = "1008cdfab27609a6f6a0e82dadad9fd9cbd8a66d"; |
||||
sha256 = "1h057dyhd04b9bjci952b2l7brxv183l9jw9i50mn9qjfljmvqim"; |
||||
} |
||||
|
@ -0,0 +1,205 @@ |
||||
{ version, rev, sha256 }: |
||||
|
||||
{ stdenv |
||||
, lib |
||||
, fetchFromGitHub |
||||
, cmake |
||||
, pkg-config |
||||
, zlib |
||||
, libjpeg |
||||
, libpng |
||||
, fontconfig |
||||
, freetype |
||||
, libX11 |
||||
, libXext |
||||
, libXinerama |
||||
, libXfixes |
||||
, libXcursor |
||||
, libXft |
||||
, libXrender |
||||
, ApplicationServices |
||||
, Carbon |
||||
, Cocoa |
||||
|
||||
, withGL ? true |
||||
, libGL |
||||
, libGLU |
||||
, glew |
||||
, OpenGL |
||||
|
||||
, withCairo ? true |
||||
, cairo |
||||
|
||||
, withPango ? (lib.strings.versionAtLeast version "1.4" && stdenv.hostPlatform.isLinux) |
||||
, pango |
||||
|
||||
, withDocs ? true |
||||
, doxygen |
||||
, graphviz |
||||
, texlive |
||||
|
||||
, withExamples ? true |
||||
, withShared ? true |
||||
}: |
||||
|
||||
let |
||||
onOff = value: if value then "ON" else "OFF"; |
||||
tex = texlive.combine { |
||||
inherit (texlive) |
||||
scheme-medium varwidth multirow hanging adjustbox collectbox stackengine |
||||
sectsty tocloft newunicodechar etoc; |
||||
}; |
||||
in |
||||
stdenv.mkDerivation rec { |
||||
pname = "fltk"; |
||||
inherit version; |
||||
|
||||
src = fetchFromGitHub { |
||||
owner = "fltk"; |
||||
repo = "fltk"; |
||||
inherit rev sha256; |
||||
}; |
||||
|
||||
outputs = [ "out" ] |
||||
++ lib.optional withExamples "bin" |
||||
++ lib.optional withDocs "doc"; |
||||
|
||||
# Manually move example & test binaries to $bin to avoid cyclic dependencies on dev binaries |
||||
outputBin = lib.optionalString withExamples "out"; |
||||
|
||||
patches = lib.optionals stdenv.hostPlatform.isDarwin [ |
||||
./nsosv.patch |
||||
]; |
||||
|
||||
postPatch = '' |
||||
patchShebangs documentation/make_* |
||||
''; |
||||
|
||||
nativeBuildInputs = [ |
||||
cmake |
||||
pkg-config |
||||
] ++ lib.optionals withDocs [ |
||||
doxygen |
||||
graphviz |
||||
tex |
||||
]; |
||||
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ |
||||
ApplicationServices |
||||
Carbon |
||||
] ++ lib.optionals (withGL && !stdenv.hostPlatform.isDarwin) [ |
||||
libGL |
||||
libGLU |
||||
] ++ lib.optionals (withExamples && withGL) [ |
||||
glew |
||||
]; |
||||
|
||||
propagatedBuildInputs = [ |
||||
zlib |
||||
libjpeg |
||||
libpng |
||||
] ++ lib.optionals stdenv.hostPlatform.isLinux [ |
||||
freetype |
||||
fontconfig |
||||
libX11 |
||||
libXext |
||||
libXinerama |
||||
libXfixes |
||||
libXcursor |
||||
libXft |
||||
libXrender |
||||
] ++ lib.optionals stdenv.hostPlatform.isDarwin [ |
||||
Cocoa |
||||
] ++ lib.optionals (withGL && stdenv.hostPlatform.isDarwin) [ |
||||
OpenGL |
||||
] ++ 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" |
||||
|
||||
# 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}" |
||||
|
||||
# GL |
||||
"-DOPTION_USE_GL=${onOff withGL}" |
||||
"-DOpenGL_GL_PREFERENCE=GLVND" |
||||
|
||||
# Cairo |
||||
"-DOPTION_CAIRO=${onOff withCairo}" |
||||
"-DOPTION_CAIROEXT=${onOff withCairo}" |
||||
|
||||
# Pango |
||||
"-DOPTION_USE_PANGO=${onOff withPango}" |
||||
|
||||
# Examples & Tests |
||||
"-DFLTK_BUILD_EXAMPLES=${onOff withExamples}" |
||||
|
||||
# Docs |
||||
"-DOPTION_BUILD_HTML_DOCUMENTATION=${onOff withDocs}" |
||||
"-DOPTION_BUILD_PDF_DOCUMENTATION=${onOff withDocs}" |
||||
"-DOPTION_INSTALL_HTML_DOCUMENTATION=${onOff withDocs}" |
||||
"-DOPTION_INSTALL_PDF_DOCUMENTATION=${onOff withDocs}" |
||||
"-DOPTION_INCLUDE_DRIVER_DOCUMENTATION=${onOff withDocs}" |
||||
]; |
||||
|
||||
preBuild = lib.optionalString (withCairo && withShared && stdenv.hostPlatform.isDarwin) '' |
||||
# unresolved symbols in cairo dylib without this: https://github.com/fltk/fltk/issues/250 |
||||
export NIX_LDFLAGS="$NIX_LDFLAGS -undefined dynamic_lookup" |
||||
''; |
||||
|
||||
postBuild = lib.optionalString withDocs '' |
||||
make docs |
||||
''; |
||||
|
||||
postInstall = lib.optionalString withExamples '' |
||||
mkdir -p $bin/bin |
||||
mv bin/{test,examples}/* $bin/bin/ |
||||
'' + lib.optionalString stdenv.hostPlatform.isDarwin '' |
||||
mkdir -p $out/Library/Frameworks |
||||
mv $out{,/Library/Frameworks}/FLTK.framework |
||||
|
||||
moveAppBundles() { |
||||
echo "Moving and symlinking $1" |
||||
appname="$(basename "$1")" |
||||
binname="$(basename "$(find "$1"/Contents/MacOS/ -type f -executable | head -n1)")" |
||||
curpath="$(dirname "$1")" |
||||
|
||||
mkdir -p "$curpath"/../Applications/ |
||||
mv "$1" "$curpath"/../Applications/ |
||||
[ -f "$curpath"/"$binname" ] && rm "$curpath"/"$binname" |
||||
ln -s ../Applications/"$appname"/Contents/MacOS/"$binname" "$curpath"/"$binname" |
||||
} |
||||
|
||||
rm $out/bin/fluid.icns |
||||
for app in $out/bin/*.app ${lib.optionalString withExamples "$bin/bin/*.app"}; do |
||||
moveAppBundles "$app" |
||||
done |
||||
''; |
||||
|
||||
postFixup = '' |
||||
substituteInPlace $out/bin/fltk-config \ |
||||
--replace "/$out/" "/" |
||||
''; |
||||
|
||||
meta = with lib; { |
||||
description = "A C++ cross-platform lightweight GUI library"; |
||||
homepage = "https://www.fltk.org"; |
||||
platforms = platforms.unix; |
||||
# LGPL2 with static linking exception |
||||
# https://www.fltk.org/COPYING.php |
||||
license = licenses.lgpl2Only; |
||||
}; |
||||
} |
@ -1,46 +1,5 @@ |
||||
{ lib, stdenv, fetchurl, pkg-config, xlibsWrapper, xorgproto, libXi |
||||
, freeglut, libGL, libGLU, libjpeg, zlib, libXft, libpng |
||||
, libtiff, freetype, Cocoa, AGL, GLUT |
||||
}: |
||||
|
||||
let |
||||
import ./common.nix rec { |
||||
version = "1.3.6"; |
||||
in |
||||
|
||||
stdenv.mkDerivation { |
||||
pname = "fltk"; |
||||
inherit version; |
||||
|
||||
src = fetchurl { |
||||
url = "https://www.fltk.org/pub/fltk/${version}/fltk-${version}-source.tar.gz"; |
||||
sha256 = "1arp1niiz3qxm8iacpmilwpc5rinsm6hsk4a6fsxfywvkvppbb4s"; |
||||
}; |
||||
|
||||
patches = lib.optionals stdenv.isDarwin [ ./nsosv.patch ]; |
||||
|
||||
nativeBuildInputs = [ pkg-config ]; |
||||
buildInputs = [ libGLU libGL libjpeg zlib libpng libXft ] |
||||
++ lib.optional stdenv.isDarwin [ AGL Cocoa GLUT ]; |
||||
|
||||
propagatedBuildInputs = [ xorgproto ] |
||||
++ (if stdenv.isDarwin |
||||
then [ freetype libtiff ] |
||||
else [ xlibsWrapper libXi freeglut ]); |
||||
|
||||
configureFlags = [ |
||||
"--enable-gl" |
||||
"--enable-largefile" |
||||
"--enable-shared" |
||||
"--enable-threads" |
||||
"--enable-xft" |
||||
]; |
||||
|
||||
enableParallelBuilding = true; |
||||
|
||||
meta = with lib; { |
||||
description = "A C++ cross-platform lightweight GUI library"; |
||||
homepage = "https://www.fltk.org"; |
||||
platforms = platforms.linux ++ platforms.darwin; |
||||
license = licenses.gpl2; |
||||
}; |
||||
rev = "release-${version}"; |
||||
sha256 = "0vzk4d6j927v7dxywr5xlqlf70myal1xikkdfvd11p94rcdf9bsv"; |
||||
} |
||||
|
Loading…
Reference in new issue