1 { lib, stdenv, fetchurl, fetchpatch, pkg-config, file, zip, wxGTK32, gtk3
2 , contribPlugins ? false, hunspell, boost, wrapGAppsHook3
5 stdenv.mkDerivation rec {
6 name = "${pname}-${lib.optionalString contribPlugins "full-"}${version}";
11 url = "mirror://sourceforge/codeblocks/Sources/${version}/codeblocks-${version}.tar.xz";
12 sha256 = "1idaksw1vacmm83krxh5zlb12kad3dkz9ixh70glw1gaibib7vhm";
15 nativeBuildInputs = [ pkg-config file zip wrapGAppsHook3 ];
16 buildInputs = [ wxGTK32 gtk3 ]
17 ++ lib.optionals contribPlugins [ hunspell boost ];
18 enableParallelBuilding = true;
20 ./writable-projects.patch
21 ./fix-clipboard-flush.patch
22 # Fix build on non-x86 machines
24 name = "remove-int3.patch";
25 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/d76c015c456561d2c7987935a5f4dc6c0932b0c4.patch";
26 sha256 = "sha256-dpH33vGf2aNdYTeLwxglYDNbvwoY2bGSG6YFRyoGw+A=";
29 name = "remove-pragmas.patch";
30 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/966949d5ab7f3cb86e2a2c7ef4e853ee209b5a1a.patch";
31 sha256 = "sha256-XjejjGOvDk3gl1/n9R69XATGLj5n7tOZNyG8vIlwfyg=";
33 # Fix build with GCC 11
35 name = "use-gcc11-openfilelist.patch";
36 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/a5ea6ff7ff301d739d3dc8145db1578f504ee4ca.patch";
37 sha256 = "sha256-kATaLej8kJf4xm0VicHfRetOepX8O9gOhwdna0qylvQ=";
40 name = "use-gcc11-ccmanager.patch";
41 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/04b7c50fb8c6a29b2d84579ee448d2498414d855.patch";
42 sha256 = "sha256-VPy/M6IvNBxUE4hZRbLExFm0DJf4gmertrqrvsXQNz4=";
44 # Fix build with wxGTK 3.1.5
46 name = "use-wxgtk315.patch";
47 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/2345b020b862ec855038dd32a51ebb072647f28d.patch";
48 sha256 = "sha256-RRjwZA37RllnG8cJdBEnASpEd8z0+ru96fjntO42OvU=";
51 name = "fix-taskbar-icons.patch";
52 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/40eb88e3f2b933f19f9933e06c8d0899c54f5e25.patch";
53 hash = "sha256-Gj5gtxX5QNYAeF+QrPS/bBHLLEmflSxUHSLUK3GSs0I=";
56 name = "fix-warnings.patch";
57 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/56ac0396fad7a5b4bbb40bb8c4b5fe1755078aef.patch";
58 excludes = [ "src/src/environmentsettingsdlg.h" ];
59 hash = "sha256-tl4rF9iAf1TzCIbKhVFqcxvr1IiPdwqLYZg0SY5BJ7I=";
62 name = "fix-getstring.patch";
63 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/dbdf5c5ea9e3161233f0588a7616b7e4fedc7870.patch";
64 sha256 = "sha256-DrEMFluN8vs0LERa7ULGshl7HdejpsuvXAMjIr/K1fQ=";
66 # Fix build with wxGTK 3.1.6
68 name = "remove-code-for-old-wx-1.patch";
69 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/8035dfdff321754819f79e3165401aa59bd8c7f7.patch";
70 hash = "sha256-Z8Ap03W/XH5VwKFVudJr7rugb0BgI2dKJgQS4yIWbEM=";
73 name = "remove-code-for-old-wx-2.patch";
74 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/9a9c6a9d5e3e0f6eff5594ecd61a2222f073be9c.patch";
75 hash = "sha256-SwYixvbRuXQ+jA1ijmClWkzqzzr0viVuFOAsihGc5dM=";
78 name = "remove-code-for-old-wx-3.patch";
79 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/c28746f4887f10e6f9f10eeafae0fb22ecdbf9c7.patch";
80 hash = "sha256-1lcIiCnY2nBuUsffXC2rdglOE3ccIbogcgTx4M2Ee2I=";
83 name = "fix-notebookstyles.patch";
84 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/29315df024251850832583f73e67e515dae10830.patch";
85 hash = "sha256-Uc1V0eEbNljnN+1Dqb/35MLSSoLjyuRZMTofgcXRyb8=";
88 name = "fix-regex.patch";
89 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/46720043319758cb0e798eb23520063583c40eaa.patch";
90 hash = "sha256-Aix58T0JJcX/7VZukU/9i/nXh9GJywXC3yXEyUZK0js=";
93 name = "fix-build-with-clang.patch";
94 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/92cb2239662952e3b59b31e03edd653bb8066e64.patch";
95 hash = "sha256-XI7JW9Nuueb7muKpaC2icM/CxhrCJtO48cLHK+BVWXI=";
98 name = "fix-normalize.patch";
99 url = "https://github.com/archlinux/svntogit-community/raw/458eacb60bc0e71e3d333943cebbc41e75ed0956/trunk/sc_wxtypes-normalize.patch";
100 hash = "sha256-7wEwDLwuNUWHUwHjFyq74sHiuEha1VexRLEX42rPZSs=";
104 name = "update-about-dialog.patch";
105 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/a4aacc92640b587ad049cd6aa68c637e536e9ab5.patch";
106 hash = "sha256-2S4sVn+Dq5y9xcxCkzQ+WeR+qWxAOLbQUZEnk060RI0=";
109 name = "add-display-info.patch";
110 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/f2f127cf5cd97c7da6a957a3f7764cb25cc9017e.patch";
111 hash = "sha256-C0dVfC0NIHMXfWNlOwjzoGz5tmG2dlnU/EE92Jjebbs=";
114 name = "fix-hidpi.patch";
115 url = "https://github.com/arnholm/codeblocks_sfmirror/commit/b2e4f1279804e1d11b71bc75eeb37072c3589296.patch";
116 hash = "sha256-/Xp6ww9C3V6I67tTA4MrGpSGo3J0MXzFjzQU7RxY84U=";
119 preConfigure = "substituteInPlace ./configure --replace /usr/bin/file ${file}/bin/file";
120 postConfigure = lib.optionalString stdenv.hostPlatform.isLinux "substituteInPlace libtool --replace ldconfig ${stdenv.cc.libc.bin}/bin/ldconfig";
121 configureFlags = [ "--enable-pch=no" ] ++ lib.optionals contribPlugins [
122 ("--with-contrib-plugins=all,-FileManager" + lib.optionalString stdenv.hostPlatform.isDarwin ",-NassiShneiderman")
123 "--with-boost-libdir=${boost}/lib"
125 postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
126 ln -s $out/lib/codeblocks/plugins $out/share/codeblocks/plugins
130 maintainers = [ maintainers.linquize ];
131 platforms = platforms.all;
132 description = "Open source, cross platform, free C, C++ and Fortran IDE";
135 Code::Blocks is a free C, C++ and Fortran IDE built to meet the most demanding needs of its users.
136 It is designed to be very extensible and fully configurable.
137 Finally, an IDE with all the features you need, having a consistent look, feel and operation across platforms.
139 homepage = "http://www.codeblocks.org";
140 license = licenses.gpl3;