python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / development / libraries / qt-6 / modules / qtbase.nix
blob436fe4633075603fd4ba8770c78c4c4132eaddfd
1 { stdenv
2 , lib
3 , src
4 , patches ? [ ]
5 , version
6 , coreutils
7 , bison
8 , flex
9 , gdb
10 , gperf
11 , lndir
12 , perl
13 , pkg-config
14 , python3
15 , which
16 , cmake
17 , ninja
18 , ccache
19 , xmlstarlet
20 , libproxy
21 , xlibsWrapper
22 , xorg
23 , zstd
24 , double-conversion
25 , util-linux
26 , systemd
27 , libb2
28 , md4c
29 , mtdev
30 , lksctp-tools
31 , libselinux
32 , libsepol
33 , vulkan-headers
34 , vulkan-loader
35 , valgrind
36 , libthai
37 , libdrm
38 , libdatrie
39 , lttng-ust
40 , libepoxy
41 , libiconv
42 , dbus
43 , fontconfig
44 , freetype
45 , glib
46 , harfbuzz
47 , icu
48 , libX11
49 , libXcomposite
50 , libXext
51 , libXi
52 , libXrender
53 , libinput
54 , libjpeg
55 , libpng
56 , libxcb
57 , libxkbcommon
58 , libxml2
59 , libxslt
60 , openssl
61 , pcre
62 , pcre2
63 , sqlite
64 , udev
65 , xcbutil
66 , xcbutilimage
67 , xcbutilkeysyms
68 , xcbutilrenderutil
69 , xcbutilwm
70 , zlib
71 , at-spi2-core
72 , unixODBC
73 , unixODBCDrivers
74   # optional dependencies
75 , cups
76 , libmysqlclient
77 , postgresql
78 , withGtk3 ? false
79 , dconf
80 , gtk3
81   # options
82 , libGLSupported ? true
83 , libGL
84 , debug ? false
85 , developerBuild ? false
88 let
89   debugSymbols = debug || developerBuild;
91 stdenv.mkDerivation rec {
92   pname = "qtbase";
94   inherit src version;
96   debug = debugSymbols;
98   propagatedBuildInputs = [
99     libxml2
100     libxslt
101     openssl
102     sqlite
103     zlib
104     unixODBC
105     # Text rendering
106     harfbuzz
107     icu
108     # Image formats
109     libjpeg
110     libpng
111     pcre2
112     pcre
113     libproxy
114     xlibsWrapper
115     zstd
116     double-conversion
117     util-linux
118     systemd
119     libb2
120     md4c
121     mtdev
122     lksctp-tools
123     libselinux
124     libsepol
125     lttng-ust
126     vulkan-headers
127     vulkan-loader
128     libthai
129     libdrm
130     libdatrie
131     valgrind
132     dbus
133     glib
134     udev
135     # Text rendering
136     fontconfig
137     freetype
138     # X11 libs
139     libX11
140     libXcomposite
141     libXext
142     libXi
143     libXrender
144     libxcb
145     libxkbcommon
146     xcbutil
147     xcbutilimage
148     xcbutilkeysyms
149     xcbutilrenderutil
150     xcbutilwm
151     xorg.libXdmcp
152     xorg.libXtst
153     xorg.xcbutilcursor
154     libepoxy
155   ] ++ (with unixODBCDrivers; [
156     psql
157     sqlite
158     mariadb
159   ]) ++ lib.optional libGLSupported libGL;
161   buildInputs = [
162     python3
163     at-spi2-core
164     libinput
165   ]
166   ++ lib.optional withGtk3 gtk3
167   ++ lib.optional developerBuild gdb
168   ++ lib.optional (cups != null) cups
169   ++ lib.optional (libmysqlclient != null) libmysqlclient
170   ++ lib.optional (postgresql != null) postgresql;
172   nativeBuildInputs = [ bison flex gperf lndir perl pkg-config which cmake xmlstarlet ninja ];
174   propagatedNativeBuildInputs = [ lndir ];
176   enableParallelBuilding = true;
178   inherit patches;
180   # https://bugreports.qt.io/browse/QTBUG-97568
181   postPatch = ''
182     substituteInPlace src/corelib/CMakeLists.txt --replace /bin/ls ${coreutils}/bin/ls
183   '';
185   fix_qt_builtin_paths = ../hooks/fix-qt-builtin-paths.sh;
186   fix_qt_module_paths = ../hooks/fix-qt-module-paths.sh;
187   preHook = ''
188     . "$fix_qt_builtin_paths"
189     . "$fix_qt_module_paths"
190     . ${../hooks/move-qt-dev-tools.sh}
191     . ${../hooks/fix-qmake-libtool.sh}
192   '';
194   qtPluginPrefix = "lib/qt-6/plugins";
195   qtQmlPrefix = "lib/qt-6/qml";
197   cmakeFlags = [
198     "-DINSTALL_PLUGINSDIR=${qtPluginPrefix}"
199     "-DINSTALL_QMLDIR=${qtQmlPrefix}"
200     "-DQT_FEATURE_journald=ON"
201     "-DQT_FEATURE_sctp=ON"
202     "-DQT_FEATURE_libproxy=ON"
203     "-DQT_FEATURE_system_sqlite=ON"
204     "-DQT_FEATURE_vulkan=ON"
205     "-DQT_FEATURE_openssl_linked=ON"
206   ];
208   outputs = [ "out" "dev" ];
210   postInstall = ''
211     moveToOutput "mkspecs" "$dev"
212   '';
214   devTools = [
215     "libexec/moc"
216     "libexec/rcc"
217     "libexec/syncqt.pl"
218     "libexec/qlalr"
219     "libexec/ensure_pro_file.cmake"
220     "libexec/cmake_automoc_parser"
221     "libexec/qvkgen"
222     "libexec/tracegen"
223     "libexec/uic"
224     "bin/fixqt4headers.pl"
225     "bin/moc"
226     "bin/qdbuscpp2xml"
227     "bin/qdbusxml2cpp"
228     "bin/qlalr"
229     "bin/qmake"
230     "bin/rcc"
231     "bin/syncqt.pl"
232     "bin/uic"
233   ];
235   postFixup = ''
236     # Don't retain build-time dependencies like gdb.
237     sed '/QMAKE_DEFAULT_.*DIRS/ d' -i $dev/mkspecs/qconfig.pri
238     fixQtModulePaths "''${!outputDev}/mkspecs/modules"
239     fixQtBuiltinPaths "''${!outputDev}" '*.pr?'
241     # Move development tools to $dev
242     moveQtDevTools
243     moveToOutput bin "$dev"
244     moveToOutput libexec "$dev"
246     # fixup .pc file (where to find 'moc' etc.)
247     sed -i "$dev/lib/pkgconfig/Qt6Core.pc" \
248       -e "/^bindir=/ c bindir=$dev/bin"
250     patchShebangs $out $dev
251   '';
253   dontStrip = debugSymbols;
255   setupHook = ../hooks/qtbase-setup-hook.sh;
257   meta = with lib; {
258     homepage = "https://www.qt.io/";
259     description = "A cross-platform application framework for C++";
260     license = with licenses; [ fdl13Plus gpl2Plus lgpl21Plus lgpl3Plus ];
261     maintainers = with maintainers; [ milahu nickcao LunNova ];
262     platforms = platforms.linux;
263   };