1{ lib, stdenv, qmake, qtbase, perl, php, kcachegrind, wrapQtAppsHook }:
2
3stdenv.mkDerivation {
4 pname = "qcachegrind";
5 version = kcachegrind.version;
6
7 src = kcachegrind.src;
8
9 buildInputs = [ qtbase perl php ];
10
11 nativeBuildInputs = [ qmake wrapQtAppsHook ];
12
13 dontWrapQtApps = true;
14
15 postInstall = ''
16 mkdir -p $out/bin
17 cp -p converters/dprof2calltree $out/bin/dprof2calltree
18 cp -p converters/memprof2calltree $out/bin/memprof2calltree
19 cp -p converters/op2calltree $out/bin/op2calltree
20 cp -p converters/pprof2calltree $out/bin/pprof2calltree
21 chmod -R +x $out/bin/
22 '' + (if stdenv.isDarwin then ''
23 mkdir -p $out/Applications
24 cp cgview/cgview.app/Contents/MacOS/cgview $out/bin
25 cp -a qcachegrind/qcachegrind.app $out/Applications
26 '' else ''
27 install qcachegrind/qcachegrind cgview/cgview -t "$out/bin"
28 install -Dm644 qcachegrind/qcachegrind.desktop -t "$out/share/applications"
29 install -Dm644 kcachegrind/32-apps-kcachegrind.png "$out/share/icons/hicolor/32x32/apps/kcachegrind.png"
30 install -Dm644 kcachegrind/48-apps-kcachegrind.png "$out/share/icons/hicolor/48x48/apps/kcachegrind.png"
31 '');
32
33 preFixup = ''
34 wrapQtApp "$out/bin/qcachegrind"
35 '';
36
37 meta = with lib; {
38 broken = stdenv.isDarwin;
39 description = "A Qt GUI to visualize profiling data";
40 license = licenses.gpl2Plus;
41 platforms = platforms.unix;
42 maintainers = with maintainers; [ periklis ];
43 };
44}