1{ lib
2, stdenv
3, fetchgit
4, alsa-lib
5, gtk3
6, libGL
7, libGLU
8, libX11
9, pkg-config
10, upx
11, xcbutil
12}:
13
14stdenv.mkDerivation {
15 name = "c64-debugger";
16 version = "0.64.58.6";
17
18 src = fetchgit {
19 url = "https://git.code.sf.net/p/c64-debugger/code";
20 rev = "f97772e3f5c8b4fa99e8ed212ed1c4cb1e2389f1";
21 sha256 = "sha256-3SR73AHQlYSEYpJLtQ/aJ1UITZGq7aA9tQKxBsn/yuc=";
22 };
23
24 buildInputs = [
25 alsa-lib
26 gtk3
27 libGL
28 libGLU
29 libX11
30 xcbutil
31 ];
32
33 nativeBuildInputs = [
34 upx
35 pkg-config
36 ];
37
38 postPatch = ''
39 # Disable default definition of RUN_COMMODORE64
40 sed -i 's|^#define RUN_COMMODORE64|//#define RUN_COMMODORE64|' MTEngine/Games/c64/C64D_Version.h
41 '';
42
43 buildPhase = ''
44 runHook preBuild
45
46 # Build C64 debugger
47 make -C MTEngine \
48 CFLAGS="-w -O2 -fcommon" \
49 CXXFLAGS="-w -O2 --std=c++11" \
50 DEFINES="-DRUN_COMMODORE64" \
51 -j$NIX_BUILD_CORES
52 mv MTEngine/c64debugger c64debugger
53 make -C MTEngine clean
54
55 # Build 65XE debugger
56 make -C MTEngine \
57 CFLAGS="-w -O2 -fcommon" \
58 CXXFLAGS="-w -O2 --std=c++11" \
59 DEFINES="-DRUN_ATARI" \
60 -j$NIX_BUILD_CORES
61 mv MTEngine/c64debugger 65xedebugger
62 make -C MTEngine clean
63
64 # Build NES debugger
65 make -C MTEngine \
66 CFLAGS="-w -O2 -fcommon" \
67 CXXFLAGS="-w -O2 --std=c++11" \
68 DEFINES="-DRUN_NES" \
69 -j$NIX_BUILD_CORES
70 mv MTEngine/c64debugger nesdebugger
71
72 runHook postBuild
73 '';
74
75 installPhase = ''
76 runHook preInstall
77
78 install -d "$out/bin"
79 install -d "$out/share/doc"
80 install -m 755 c64debugger 65xedebugger nesdebugger "$out/bin"
81 install -m 644 MTEngine/Assets/*.txt "$out/share/doc"
82 install -m 644 MTEngine/Assets/*.pdf "$out/share/doc"
83
84 runHook postInstall
85 '';
86
87 meta = with lib; {
88 homepage = "https://sourceforge.net/projects/c64-debugger";
89 description = "Commodore 64, Atari XL/XE and NES code and memory debugger that works in real time";
90 license = with licenses; [
91 gpl3Only # c64-debugger
92 mit # MTEngine
93 # emulators included in c64-debugger
94 gpl2Plus # VICE, atari800
95 gpl2 # nestopiaue
96 ];
97 mainProgram = "c64debugger";
98 maintainers = [ maintainers.detegr ];
99 platforms = platforms.linux;
100 };
101}