diff --git a/pkgs/development/libraries/opencsg/default.nix b/pkgs/development/libraries/opencsg/default.nix index e0a6c6a5705..11c66f0d497 100644 --- a/pkgs/development/libraries/opencsg/default.nix +++ b/pkgs/development/libraries/opencsg/default.nix @@ -1,5 +1,5 @@ {stdenv, fetchurl, libGLU_combined, freeglut, glew, libXmu, libXext, libX11 - }: +, qmake, GLUT, fixDarwinDylibNames }: stdenv.mkDerivation rec { version = "1.4.2"; @@ -9,27 +9,42 @@ stdenv.mkDerivation rec { sha256 = "1ysazynm759gnw1rdhn9xw9nixnzrlzrc462340a6iif79fyqlnr"; }; - buildInputs = [libGLU_combined freeglut glew libXmu libXext libX11]; + nativeBuildInputs = [ qmake ] + ++ stdenv.lib.optional stdenv.isDarwin fixDarwinDylibNames; + + buildInputs = [ glew ] + ++ stdenv.lib.optionals stdenv.isLinux [ libGLU_combined freeglut libXmu libXext libX11 ] + ++ stdenv.lib.optional stdenv.isDarwin GLUT; doCheck = false; + patches = [ ./fix-pro-files.patch ]; + preConfigure = '' - sed -i 's/^\(LIBS *=.*\)$/\1 -lX11/' example/Makefile + rm example/Makefile src/Makefile + qmakeFlags="$qmakeFlags INSTALLDIR=$out" ''; - installPhase = '' - mkdir -pv "$out/"{bin,share/doc/opencsg} + postInstall = '' + install -D license.txt "$out/share/doc/opencsg/license.txt" + '' + stdenv.lib.optionalString stdenv.isDarwin '' + mkdir -p $out/Applications + mv $out/bin/*.app $out/Applications + rmdir $out/bin || true + ''; - cp example/opencsgexample "$out/bin" - cp -r include lib "$out" - - cp license.txt "$out/share/doc/opencsg" + postFixup = stdenv.lib.optionalString stdenv.isDarwin '' + app=$out/Applications/opencsgexample.app/Contents/MacOS/opencsgexample + install_name_tool -change \ + $(otool -L $app | awk '/opencsg.+dylib/ { print $1 }') \ + $(otool -D $out/lib/libopencsg.dylib | tail -n 1) \ + $app ''; meta = with stdenv.lib; { description = "Constructive Solid Geometry library"; homepage = http://www.opencsg.org/; - platforms = platforms.linux; + platforms = platforms.unix; maintainers = [ maintainers.raskin ]; license = licenses.gpl2; }; diff --git a/pkgs/development/libraries/opencsg/fix-pro-files.patch b/pkgs/development/libraries/opencsg/fix-pro-files.patch new file mode 100644 index 00000000000..462b44c8f40 --- /dev/null +++ b/pkgs/development/libraries/opencsg/fix-pro-files.patch @@ -0,0 +1,21 @@ +diff -ur OpenCSG-1.4.2-pristine/example/example.pro OpenCSG-1.4.2/example/example.pro +--- OpenCSG-1.4.2-pristine/example/example.pro 2016-09-27 06:11:16.000000000 +0900 ++++ OpenCSG-1.4.2/example/example.pro 2019-05-07 10:45:18.785251737 +0900 +@@ -6,7 +6,9 @@ + INCLUDEPATH += ../include + LIBS += -L../lib -lopencsg -lGLEW + +-INSTALLDIR = /usr/local ++isEmpty(INSTALLDIR) { ++ INSTALLDIR = /usr/local ++} + INSTALLS += target + target.path = $$INSTALLDIR/bin + +diff -ur OpenCSG-1.4.2-pristine/opencsg.pro OpenCSG-1.4.2/opencsg.pro +--- OpenCSG-1.4.2-pristine/opencsg.pro 2016-09-27 06:11:16.000000000 +0900 ++++ OpenCSG-1.4.2/opencsg.pro 2019-05-07 10:44:50.578698165 +0900 +@@ -1,2 +1,3 @@ + TEMPLATE = subdirs + SUBDIRS = src example ++CONFIG += ordered diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index d78e83fbd9c..57ba1ab44dc 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -12296,7 +12296,10 @@ in opencore-amr = callPackage ../development/libraries/opencore-amr { }; - opencsg = callPackage ../development/libraries/opencsg { }; + opencsg = callPackage ../development/libraries/opencsg { + inherit (qt5) qmake; + inherit (darwin.apple_sdk.frameworks) GLUT; + }; openct = callPackage ../development/libraries/openct { };