lol
at 18.09-beta 795 lines 38 kB view raw
1diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf 2index 11fb52a0b1..614fdbb046 100644 3--- a/mkspecs/features/create_cmake.prf 4+++ b/mkspecs/features/create_cmake.prf 5@@ -21,7 +21,7 @@ load(cmake_functions) 6 # at cmake time whether package has been found via a symlink, and correct 7 # that to an absolute path. This is only done for installations to 8 # the /usr or / prefix. 9-CMAKE_INSTALL_LIBS_DIR = $$cmakeTargetPath($$[QT_INSTALL_LIBS]) 10+CMAKE_INSTALL_LIBS_DIR = $$cmakeTargetPath($$NIX_OUTPUT_OUT/lib/) 11 contains(CMAKE_INSTALL_LIBS_DIR, ^(/usr)?/lib(64)?.*): CMAKE_USR_MOVE_WORKAROUND = $$CMAKE_INSTALL_LIBS_DIR 12 13 CMAKE_OUT_DIR = $$MODULE_BASE_OUTDIR/lib/cmake 14@@ -47,47 +47,22 @@ split_incpath { 15 $$cmake_extra_source_includes.output 16 } 17 18-CMAKE_INCLUDE_DIR = $$cmakeRelativePath($$[QT_INSTALL_HEADERS], $$[QT_INSTALL_PREFIX]) 19-contains(CMAKE_INCLUDE_DIR, "^\\.\\./.*") { 20- CMAKE_INCLUDE_DIR = $$[QT_INSTALL_HEADERS]/ 21- CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True 22-} 23+CMAKE_INCLUDE_DIR = $$NIX_OUTPUT_DEV/include/ 24+CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True 25 26 !exists($$first(QT.$${MODULE}_private.includes)): CMAKE_NO_PRIVATE_INCLUDES = true 27 28-CMAKE_LIB_DIR = $$cmakeRelativePath($$[QT_INSTALL_LIBS], $$[QT_INSTALL_PREFIX]) 29-contains(CMAKE_LIB_DIR,"^\\.\\./.*") { 30- CMAKE_LIB_DIR = $$[QT_INSTALL_LIBS]/ 31- CMAKE_LIB_DIR_IS_ABSOLUTE = True 32-} else { 33- CMAKE_RELATIVE_INSTALL_LIBS_DIR = $$cmakeRelativePath($$[QT_INSTALL_PREFIX], $$[QT_INSTALL_LIBS]) 34- # We need to go up another two levels because the CMake files are 35- # installed in $${CMAKE_LIB_DIR}/cmake/Qt5$${CMAKE_MODULE_NAME} 36- CMAKE_RELATIVE_INSTALL_DIR = "$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}../../" 37-} 38+CMAKE_LIB_DIR = $$NIX_OUTPUT_OUT/lib/ 39+CMAKE_LIB_DIR_IS_ABSOLUTE = True 40 41-CMAKE_BIN_DIR = $$cmakeRelativePath($$[QT_HOST_BINS], $$[QT_INSTALL_PREFIX]) 42-contains(CMAKE_BIN_DIR, "^\\.\\./.*") { 43- CMAKE_BIN_DIR = $$[QT_HOST_BINS]/ 44- CMAKE_BIN_DIR_IS_ABSOLUTE = True 45-} 46+CMAKE_BIN_DIR = $$NIX_OUTPUT_BIN/bin/ 47+CMAKE_BIN_DIR_IS_ABSOLUTE = True 48 49-CMAKE_PLUGIN_DIR = $$cmakeRelativePath($$[QT_INSTALL_PLUGINS], $$[QT_INSTALL_PREFIX]) 50-contains(CMAKE_PLUGIN_DIR, "^\\.\\./.*") { 51- CMAKE_PLUGIN_DIR = $$[QT_INSTALL_PLUGINS]/ 52- CMAKE_PLUGIN_DIR_IS_ABSOLUTE = True 53-} 54+CMAKE_PLUGIN_DIR = $$NIX_OUTPUT_PLUGIN/ 55+CMAKE_PLUGIN_DIR_IS_ABSOLUTE = True 56 57-win32:!wince:!static:!staticlib { 58- CMAKE_DLL_DIR = $$cmakeRelativePath($$[QT_INSTALL_BINS], $$[QT_INSTALL_PREFIX]) 59- contains(CMAKE_DLL_DIR, "^\\.\\./.*") { 60- CMAKE_DLL_DIR = $$[QT_INSTALL_BINS]/ 61- CMAKE_DLL_DIR_IS_ABSOLUTE = True 62- } 63-} else { 64- CMAKE_DLL_DIR = $$CMAKE_LIB_DIR 65- CMAKE_DLL_DIR_IS_ABSOLUTE = $$CMAKE_LIB_DIR_IS_ABSOLUTE 66-} 67+CMAKE_DLL_DIR = $$NIX_OUTPUT_OUT/lib/ 68+CMAKE_DLL_DIR_IS_ABSOLUTE = True 69 70 static|staticlib:CMAKE_STATIC_TYPE = true 71 72@@ -167,7 +142,7 @@ contains(CONFIG, plugin) { 73 cmake_target_file 74 75 cmake_qt5_plugin_file.files = $$cmake_target_file.output 76- cmake_qt5_plugin_file.path = $$[QT_INSTALL_LIBS]/cmake/Qt5$${CMAKE_MODULE_NAME} 77+ cmake_qt5_plugin_file.path = $$NIX_OUTPUT_OUT/lib/cmake/Qt5$${CMAKE_MODULE_NAME} 78 INSTALLS += cmake_qt5_plugin_file 79 80 return() 81@@ -314,7 +289,7 @@ exists($$cmake_macros_file.input) { 82 cmake_qt5_module_files.files += $$cmake_macros_file.output 83 } 84 85-cmake_qt5_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5$${CMAKE_MODULE_NAME} 86+cmake_qt5_module_files.path = $$NIX_OUTPUT_OUT/lib/cmake/Qt5$${CMAKE_MODULE_NAME} 87 88 # We are generating cmake files. Most developers of Qt are not aware of cmake, 89 # so we require automatic tests to be available. The only module which should 90diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in 91index d2358cae4b..61d8cc0471 100644 92--- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in 93+++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in 94@@ -9,30 +9,6 @@ if (CMAKE_VERSION VERSION_LESS 3.0.0) 95 endif() 96 !!ENDIF 97 98-!!IF !isEmpty(CMAKE_USR_MOVE_WORKAROUND) 99-!!IF !isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) 100-set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\") 101-!!ELSE 102-get_filename_component(_IMPORT_PREFIX \"${CMAKE_CURRENT_LIST_FILE}\" PATH) 103-# Use original install prefix when loaded through a 104-# cross-prefix symbolic link such as /lib -> /usr/lib. 105-get_filename_component(_realCurr \"${_IMPORT_PREFIX}\" REALPATH) 106-get_filename_component(_realOrig \"$$CMAKE_INSTALL_LIBS_DIR/cmake/Qt5$${CMAKE_MODULE_NAME}\" REALPATH) 107-if(_realCurr STREQUAL _realOrig) 108- get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$CMAKE_INSTALL_LIBS_DIR/$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}\" ABSOLUTE) 109-else() 110- get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) 111-endif() 112-unset(_realOrig) 113-unset(_realCurr) 114-unset(_IMPORT_PREFIX) 115-!!ENDIF 116-!!ELIF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) 117-get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) 118-!!ELSE 119-set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\") 120-!!ENDIF 121- 122 !!IF !equals(TEMPLATE, aux) 123 # For backwards compatibility only. Use Qt5$${CMAKE_MODULE_NAME}_VERSION instead. 124 set(Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING "$$eval(QT.$${MODULE}.MAJOR_VERSION).$$eval(QT.$${MODULE}.MINOR_VERSION).$$eval(QT.$${MODULE}.PATCH_VERSION)") 125@@ -58,11 +34,7 @@ endmacro() 126 macro(_populate_$${CMAKE_MODULE_NAME}_target_properties Configuration LIB_LOCATION IMPLIB_LOCATION) 127 set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) 128 129-!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) 130- set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") 131-!!ELSE 132 set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\") 133-!!ENDIF 134 _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) 135 set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES 136 \"INTERFACE_LINK_LIBRARIES\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" 137@@ -75,11 +47,7 @@ macro(_populate_$${CMAKE_MODULE_NAME}_target_properties Configuration LIB_LOCATI 138 ) 139 140 !!IF !isEmpty(CMAKE_WINDOWS_BUILD) 141-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) 142- set(imported_implib \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") 143-!!ELSE 144 set(imported_implib \"IMPORTED_IMPLIB_${Configuration}\" \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") 145-!!ENDIF 146 _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_implib}) 147 if(NOT \"${IMPLIB_LOCATION}\" STREQUAL \"\") 148 set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES 149@@ -95,24 +63,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) 150 !!IF !no_module_headers 151 !!IF !isEmpty(CMAKE_BUILD_IS_FRAMEWORK) 152 set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS 153- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\" 154- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\" 155+ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\" 156+ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\" 157 ) 158 !!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) 159 set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS 160- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\" 161- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\" 162- ) 163-!!ELSE 164- set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") 165-!!ENDIF 166-!!ELSE 167-!!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE) 168- set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR\" \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}\") 169-!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) 170- set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS 171- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION\" 172- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION/$${MODULE_INCNAME}\" 173+ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\" 174+ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\" 175 ) 176 !!ELSE 177 set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") 178@@ -128,7 +85,6 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) 179 set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") 180 !!ENDIF 181 !!ENDIF 182-!!ENDIF 183 !!IF !isEmpty(CMAKE_ADD_SOURCE_INCLUDE_DIRS) 184 include(\"${CMAKE_CURRENT_LIST_DIR}/ExtraSourceIncludes.cmake\" OPTIONAL) 185 !!ENDIF 186@@ -254,25 +210,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) 187 !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD) 188 !!IF isEmpty(CMAKE_DEBUG_TYPE) 189 !!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) 190-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) 191- if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) 192-!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE 193 if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) 194-!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE 195 _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" ) 196 !!ELSE // CMAKE_STATIC_WINDOWS_BUILD 197 if (EXISTS 198-!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) 199- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" 200-!!ELSE 201 \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" 202-!!ENDIF 203 AND EXISTS 204-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) 205- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) 206-!!ELSE 207 \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) 208-!!ENDIF 209 _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) 210 !!ENDIF // CMAKE_STATIC_WINDOWS_BUILD 211 endif() 212@@ -291,25 +235,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) 213 !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD) 214 !!IF isEmpty(CMAKE_RELEASE_TYPE) 215 !!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) 216-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) 217- if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) 218-!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE 219 if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) 220-!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE 221 _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" \"\" ) 222 !!ELSE // CMAKE_STATIC_WINDOWS_BUILD 223 if (EXISTS 224-!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) 225- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" 226-!!ELSE 227 \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" 228-!!ENDIF 229 AND EXISTS 230-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) 231- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) 232-!!ELSE 233 \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) 234-!!ENDIF 235 _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) 236 !!ENDIF // CMAKE_STATIC_WINDOWS_BUILD 237 endif() 238@@ -328,11 +260,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) 239 macro(_populate_$${CMAKE_MODULE_NAME}_plugin_properties Plugin Configuration PLUGIN_LOCATION) 240 set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) 241 242-!!IF isEmpty(CMAKE_PLUGIN_DIR_IS_ABSOLUTE) 243- set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\") 244-!!ELSE 245 set(imported_location \"$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\") 246-!!ENDIF 247 _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) 248 set_target_properties(Qt5::${Plugin} PROPERTIES 249 \"IMPORTED_LOCATION_${Configuration}\" ${imported_location} 250diff --git a/mkspecs/features/qml_module.prf b/mkspecs/features/qml_module.prf 251index 47ebe78400..25aa2b93e7 100644 252--- a/mkspecs/features/qml_module.prf 253+++ b/mkspecs/features/qml_module.prf 254@@ -17,10 +17,7 @@ fq_qml_files = $$_PRO_FILE_PWD_/qmldir 255 256 for(qmlf, QML_FILES): fq_qml_files += $$absolute_path($$qmlf, $$_PRO_FILE_PWD_) 257 258-qml1_target: \ 259- instbase = $$[QT_INSTALL_IMPORTS] 260-else: \ 261- instbase = $$[QT_INSTALL_QML] 262+instbase = $$NIX_OUTPUT_QML 263 264 # Install rules 265 qmldir.base = $$_PRO_FILE_PWD_ 266diff --git a/mkspecs/features/qml_plugin.prf b/mkspecs/features/qml_plugin.prf 267index ebec1db8da..62ace84a6c 100644 268--- a/mkspecs/features/qml_plugin.prf 269+++ b/mkspecs/features/qml_plugin.prf 270@@ -46,13 +46,8 @@ exists($$QMLTYPEFILE): QML_FILES += $$QMLTYPEFILE 271 272 load(qt_build_paths) 273 274-qml1_target { 275- DESTDIR = $$MODULE_BASE_OUTDIR/imports/$$TARGETPATH 276- instbase = $$[QT_INSTALL_IMPORTS] 277-} else { 278- DESTDIR = $$MODULE_BASE_OUTDIR/qml/$$TARGETPATH 279- instbase = $$[QT_INSTALL_QML] 280-} 281+DESTDIR = $$MODULE_BASE_OUTDIR/qml/$$TARGETPATH 282+instbase = $$NIX_OUTPUT_QML 283 284 target.path = $$instbase/$$TARGETPATH 285 INSTALLS += target 286diff --git a/mkspecs/features/qt_app.prf b/mkspecs/features/qt_app.prf 287index 46aca50cc2..4f4e634724 100644 288--- a/mkspecs/features/qt_app.prf 289+++ b/mkspecs/features/qt_app.prf 290@@ -29,7 +29,7 @@ host_build:force_bootstrap { 291 target.path = $$[QT_HOST_BINS] 292 } else { 293 !build_pass:contains(QT_CONFIG, debug_and_release): CONFIG += release 294- target.path = $$[QT_INSTALL_BINS] 295+ target.path = $$NIX_OUTPUT_BIN/bin 296 CONFIG += relative_qt_rpath # Qt's tools and apps should be relocatable 297 } 298 INSTALLS += target 299diff --git a/mkspecs/features/qt_build_paths.prf b/mkspecs/features/qt_build_paths.prf 300index 1848f00e90..2af93675c5 100644 301--- a/mkspecs/features/qt_build_paths.prf 302+++ b/mkspecs/features/qt_build_paths.prf 303@@ -23,6 +23,6 @@ exists($$MODULE_BASE_INDIR/.git): \ 304 !force_independent { 305 # If the module is not built independently, everything ends up in qtbase. 306 # This is the case in non-prefix builds, except for selected modules. 307- MODULE_BASE_OUTDIR = $$[QT_HOST_PREFIX] 308- MODULE_QMAKE_OUTDIR = $$[QT_HOST_PREFIX] 309+ MODULE_BASE_OUTDIR = $$NIX_OUTPUT_OUT 310+ MODULE_QMAKE_OUTDIR = $$NIX_OUTPUT_OUT 311 } 312diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf 313index 08b3f3e5af..5ffeafd9d8 100644 314--- a/mkspecs/features/qt_common.prf 315+++ b/mkspecs/features/qt_common.prf 316@@ -30,8 +30,8 @@ contains(TEMPLATE, .*lib) { 317 qqt_libdir = \$\$\$\$[QT_HOST_LIBS] 318 qt_libdir = $$[QT_HOST_LIBS] 319 } else { 320- qqt_libdir = \$\$\$\$[QT_INSTALL_LIBS] 321- qt_libdir = $$[QT_INSTALL_LIBS] 322+ qqt_libdir = \$\$\$\$NIX_OUTPUT_OUT/lib 323+ qt_libdir = $$NIX_OUTPUT_OUT/lib 324 } 325 contains(QMAKE_DEFAULT_LIBDIRS, $$qt_libdir) { 326 lib_replace.match = "[^ ']*$$rplbase/lib" 327diff --git a/mkspecs/features/qt_docs.prf b/mkspecs/features/qt_docs.prf 328index 183d0c9502..17982b04ec 100644 329--- a/mkspecs/features/qt_docs.prf 330+++ b/mkspecs/features/qt_docs.prf 331@@ -41,7 +41,7 @@ QMAKE_DOCS_OUTPUTDIR = $$QMAKE_DOCS_BASE_OUTDIR/$$QMAKE_DOCS_TARGETDIR 332 333 QDOC += -outputdir $$shell_quote($$QMAKE_DOCS_OUTPUTDIR) 334 !build_online_docs: \ 335- QDOC += -installdir $$shell_quote($$[QT_INSTALL_DOCS]) 336+ QDOC += -installdir $$shell_quote($$NIX_OUTPUT_DOC) 337 PREP_DOC_INDEXES = 338 DOC_INDEXES = 339 !isEmpty(QTREPOS) { 340@@ -60,8 +60,8 @@ DOC_INDEXES = 341 DOC_INDEXES += -indexdir $$shell_quote($$qrep/doc) 342 } else { 343 prepare_docs: \ 344- PREP_DOC_INDEXES += -indexdir $$shell_quote($$[QT_INSTALL_DOCS/get]) 345- DOC_INDEXES += -indexdir $$shell_quote($$[QT_INSTALL_DOCS/get]) 346+ PREP_DOC_INDEXES += -indexdir $$shell_quote($$NIX_OUTPUT_DOC) 347+ DOC_INDEXES += -indexdir $$shell_quote($$NIX_OUTPUT_DOC) 348 } 349 doc_command = $$QDOC $$QMAKE_DOCS 350 prepare_docs { 351@@ -75,12 +75,12 @@ prepare_docs { 352 qch_docs.commands = $$QHELPGENERATOR $$shell_quote($$QMAKE_DOCS_OUTPUTDIR/$${QMAKE_DOCS_TARGET}.qhp) -o $$shell_quote($$QMAKE_DOCS_BASE_OUTDIR/$${QMAKE_DOCS_TARGET}.qch) 353 354 inst_html_docs.files = $$QMAKE_DOCS_OUTPUTDIR 355- inst_html_docs.path = $$[QT_INSTALL_DOCS] 356+ inst_html_docs.path = $$NIX_OUTPUT_DOC 357 inst_html_docs.CONFIG += no_check_exist directory no_default_install no_build 358 INSTALLS += inst_html_docs 359 360 inst_qch_docs.files = $$QMAKE_DOCS_BASE_OUTDIR/$${QMAKE_DOCS_TARGET}.qch 361- inst_qch_docs.path = $$[QT_INSTALL_DOCS] 362+ inst_qch_docs.path = $$NIX_OUTPUT_DOC 363 inst_qch_docs.CONFIG += no_check_exist no_default_install no_build 364 INSTALLS += inst_qch_docs 365 366diff --git a/mkspecs/features/qt_example_installs.prf b/mkspecs/features/qt_example_installs.prf 367index 4c68cfd72f..f422f18266 100644 368--- a/mkspecs/features/qt_example_installs.prf 369+++ b/mkspecs/features/qt_example_installs.prf 370@@ -70,7 +70,7 @@ probase = $$relative_path($$_PRO_FILE_PWD_, $$dirname(_QMAKE_CONF_)/examples) 371 $$SOURCES $$HEADERS $$FORMS $$RESOURCES $$TRANSLATIONS \ 372 $$DBUS_ADAPTORS $$DBUS_INTERFACES 373 addInstallFiles(sources.files, $$sourcefiles) 374- sources.path = $$[QT_INSTALL_EXAMPLES]/$$probase 375+ sources.path = $$NIX_OUTPUT_DEV/share/examples/$$probase 376 INSTALLS += sources 377 378 check_examples { 379diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf 380index 4a1d265a8b..d346424b5b 100644 381--- a/mkspecs/features/qt_functions.prf 382+++ b/mkspecs/features/qt_functions.prf 383@@ -70,7 +70,7 @@ defineTest(qtHaveModule) { 384 defineTest(qtPrepareTool) { 385 cmd = $$eval(QT_TOOL.$${2}.binary) 386 isEmpty(cmd) { 387- cmd = $$[QT_HOST_BINS]/$$2 388+ cmd = $$system("command -v $$2") 389 exists($${cmd}.pl) { 390 cmd = perl -w $$system_path($${cmd}.pl) 391 } else: contains(QMAKE_HOST.os, Windows) { 392diff --git a/mkspecs/features/qt_installs.prf b/mkspecs/features/qt_installs.prf 393index 3a5dbb6274..24f321bd82 100644 394--- a/mkspecs/features/qt_installs.prf 395+++ b/mkspecs/features/qt_installs.prf 396@@ -12,16 +12,10 @@ 397 #library 398 !qt_no_install_library { 399 win32 { 400- host_build: \ 401- dlltarget.path = $$[QT_HOST_BINS] 402- else: \ 403- dlltarget.path = $$[QT_INSTALL_BINS] 404+ dlltarget.path = $$NIX_OUTPUT_BIN/bin 405 INSTALLS += dlltarget 406 } 407- host_build: \ 408- target.path = $$[QT_HOST_LIBS] 409- else: \ 410- target.path = $$[QT_INSTALL_LIBS] 411+ target.path = $$NIX_OUTPUT_OUT/lib 412 !static: target.CONFIG = no_dll 413 INSTALLS += target 414 } 415@@ -29,33 +23,33 @@ 416 #headers 417 qt_install_headers { 418 class_headers.files = $$SYNCQT.HEADER_CLASSES 419- class_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME 420+ class_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME 421 INSTALLS += class_headers 422 423 targ_headers.files = $$SYNCQT.HEADER_FILES 424- targ_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME 425+ targ_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME 426 INSTALLS += targ_headers 427 428 private_headers.files = $$SYNCQT.PRIVATE_HEADER_FILES 429- private_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/private 430+ private_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/private 431 INSTALLS += private_headers 432 433 qpa_headers.files = $$SYNCQT.QPA_HEADER_FILES 434- qpa_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/qpa 435+ qpa_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/qpa 436 INSTALLS += qpa_headers 437 } 438 439 #module 440 qt_install_module { 441 !isEmpty(MODULE_PRI) { 442- pritarget.path = $$[QT_HOST_DATA]/mkspecs/modules 443+ pritarget.path = $$NIX_OUTPUT_DEV/mkspecs/modules 444 pritarget.files = $$MODULE_PRI 445 INSTALLS += pritarget 446 } else: isEmpty(MODULE_PRIVATE_PRI) { 447 warning("Project $$basename(_PRO_FILE_) is a module, but has not defined MODULE_PRI, which is required for Qt to expose the module to other projects.") 448 } 449 !isEmpty(MODULE_PRIVATE_PRI) { 450- privpritarget.path = $$[QT_HOST_DATA]/mkspecs/modules 451+ privpritarget.path = $$NIX_OUTPUT_DEV/mkspecs/modules 452 privpritarget.files = $$MODULE_PRIVATE_PRI 453 INSTALLS += privpritarget 454 } 455diff --git a/mkspecs/features/qt_plugin.prf b/mkspecs/features/qt_plugin.prf 456index 3cf6c7349c..83e68025a5 100644 457--- a/mkspecs/features/qt_plugin.prf 458+++ b/mkspecs/features/qt_plugin.prf 459@@ -82,7 +82,7 @@ CONFIG(static, static|shared)|prefix_build { 460 } 461 } 462 463-target.path = $$[QT_INSTALL_PLUGINS]/$$PLUGIN_TYPE 464+target.path = $$NIX_OUTPUT_PLUGIN/$$PLUGIN_TYPE 465 INSTALLS += target 466 467 TARGET = $$qt5LibraryTarget($$TARGET) 468diff --git a/src/corelib/Qt5CoreConfigExtras.cmake.in b/src/corelib/Qt5CoreConfigExtras.cmake.in 469index 91a4eb619a..08b533e69c 100644 470--- a/src/corelib/Qt5CoreConfigExtras.cmake.in 471+++ b/src/corelib/Qt5CoreConfigExtras.cmake.in 472@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::qmake) 473 add_executable(Qt5::qmake IMPORTED) 474 475 !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) 476- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") 477+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") 478 !!ELSE 479 set(imported_location \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") 480 !!ENDIF 481@@ -18,7 +18,7 @@ if (NOT TARGET Qt5::moc) 482 add_executable(Qt5::moc IMPORTED) 483 484 !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) 485- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") 486+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") 487 !!ELSE 488 set(imported_location \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") 489 !!ENDIF 490@@ -35,7 +35,7 @@ if (NOT TARGET Qt5::rcc) 491 add_executable(Qt5::rcc IMPORTED) 492 493 !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) 494- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") 495+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") 496 !!ELSE 497 set(imported_location \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") 498 !!ENDIF 499@@ -131,7 +131,7 @@ if (NOT TARGET Qt5::WinMain) 500 !!IF !isEmpty(CMAKE_RELEASE_TYPE) 501 set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) 502 !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) 503- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\") 504+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\") 505 !!ELSE 506 set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\") 507 !!ENDIF 508@@ -145,7 +145,7 @@ if (NOT TARGET Qt5::WinMain) 509 set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) 510 511 !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) 512- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\") 513+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\") 514 !!ELSE 515 set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\") 516 !!ENDIF 517diff --git a/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in b/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in 518index c357237d0e..6f0c75de3c 100644 519--- a/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in 520+++ b/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in 521@@ -1,6 +1,6 @@ 522 523 !!IF isEmpty(CMAKE_HOST_DATA_DIR_IS_ABSOLUTE) 524-set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_HOST_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") 525+set(_qt5_corelib_extra_includes \"$$NIX_OUTPUT_DEV/$${CMAKE_HOST_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") 526 !!ELSE 527 set(_qt5_corelib_extra_includes \"$${CMAKE_HOST_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\") 528 !!ENDIF 529diff --git a/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in b/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in 530index 706304cf34..546420f6ad 100644 531--- a/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in 532+++ b/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in 533@@ -1,6 +1,6 @@ 534 535 !!IF isEmpty(CMAKE_INSTALL_DATA_DIR_IS_ABSOLUTE) 536-set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_INSTALL_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") 537+set(_qt5_corelib_extra_includes \"$$NIX_OUTPUT_DEV/$${CMAKE_INSTALL_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") 538 !!ELSE 539 set(_qt5_corelib_extra_includes \"$${CMAKE_INSTALL_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\") 540 !!ENDIF 541diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp 542index bd3c12ce97..a796775970 100644 543--- a/src/corelib/kernel/qcoreapplication.cpp 544+++ b/src/corelib/kernel/qcoreapplication.cpp 545@@ -2533,6 +2533,15 @@ QStringList QCoreApplication::libraryPaths() 546 QStringList *app_libpaths = new QStringList; 547 coreappdata()->app_libpaths.reset(app_libpaths); 548 549+ // Add library paths derived from PATH 550+ const QStringList paths = QFile::decodeName(qgetenv("PATH")).split(':'); 551+ const QString plugindir = QStringLiteral("../" NIXPKGS_QT_PLUGIN_PREFIX); 552+ for (const QString &path: paths) { 553+ if (!path.isEmpty()) { 554+ app_libpaths->append(QDir::cleanPath(path + QDir::separator() + plugindir)); 555+ } 556+ } 557+ 558 const QByteArray libPathEnv = qgetenv("QT_PLUGIN_PATH"); 559 if (!libPathEnv.isEmpty()) { 560 QStringList paths = QFile::decodeName(libPathEnv).split(QDir::listSeparator(), QString::SkipEmptyParts); 561diff --git a/src/corelib/tools/qtimezoneprivate_tz.cpp b/src/corelib/tools/qtimezoneprivate_tz.cpp 562index c13c9a5223..6936851511 100644 563--- a/src/corelib/tools/qtimezoneprivate_tz.cpp 564+++ b/src/corelib/tools/qtimezoneprivate_tz.cpp 565@@ -64,7 +64,11 @@ typedef QHash<QByteArray, QTzTimeZone> QTzTimeZoneHash; 566 // Parse zone.tab table, assume lists all installed zones, if not will need to read directories 567 static QTzTimeZoneHash loadTzTimeZones() 568 { 569- QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab"); 570+ // Try TZDIR first, in case we're running on NixOS. 571+ QString path = QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/zone.tab"); 572+ // Fallback to traditional paths in case we are not on NixOS. 573+ if (!QFile::exists(path)) 574+ path = QStringLiteral("/usr/share/zoneinfo/zone.tab"); 575 if (!QFile::exists(path)) 576 path = QStringLiteral("/usr/lib/zoneinfo/zone.tab"); 577 578@@ -636,12 +640,16 @@ void QTzTimeZonePrivate::init(const QByteArray &ianaId) 579 if (!tzif.open(QIODevice::ReadOnly)) 580 return; 581 } else { 582- // Open named tz, try modern path first, if fails try legacy path 583- tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId)); 584+ // Try TZDIR first, in case we're running on NixOS 585+ tzif.setFileName(QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/") + QString::fromLocal8Bit(ianaId)); 586 if (!tzif.open(QIODevice::ReadOnly)) { 587- tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId)); 588- if (!tzif.open(QIODevice::ReadOnly)) 589- return; 590+ // Open named tz, try modern path first, if fails try legacy path 591+ tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId)); 592+ if (!tzif.open(QIODevice::ReadOnly)) { 593+ tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId)); 594+ if (!tzif.open(QIODevice::ReadOnly)) 595+ return; 596+ } 597 } 598 } 599 600diff --git a/src/dbus/Qt5DBusConfigExtras.cmake.in b/src/dbus/Qt5DBusConfigExtras.cmake.in 601index 1d947159e2..b36865fc48 100644 602--- a/src/dbus/Qt5DBusConfigExtras.cmake.in 603+++ b/src/dbus/Qt5DBusConfigExtras.cmake.in 604@@ -2,11 +2,7 @@ 605 if (NOT TARGET Qt5::qdbuscpp2xml) 606 add_executable(Qt5::qdbuscpp2xml IMPORTED) 607 608-!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) 609- set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") 610-!!ELSE 611- set(imported_location \"$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") 612-!!ENDIF 613+ set(imported_location \"$$NIX_OUTPUT_DEV/bin/qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") 614 _qt5_DBus_check_file_exists(${imported_location}) 615 616 set_target_properties(Qt5::qdbuscpp2xml PROPERTIES 617@@ -17,11 +13,7 @@ endif() 618 if (NOT TARGET Qt5::qdbusxml2cpp) 619 add_executable(Qt5::qdbusxml2cpp IMPORTED) 620 621-!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) 622- set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") 623-!!ELSE 624- set(imported_location \"$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") 625-!!ENDIF 626+ set(imported_location \"$$NIX_OUTPUT_DEV/bin/qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") 627 _qt5_DBus_check_file_exists(${imported_location}) 628 629 set_target_properties(Qt5::qdbusxml2cpp PROPERTIES 630diff --git a/src/gui/Qt5GuiConfigExtras.cmake.in b/src/gui/Qt5GuiConfigExtras.cmake.in 631index 07869efd7d..fb4183bada 100644 632--- a/src/gui/Qt5GuiConfigExtras.cmake.in 633+++ b/src/gui/Qt5GuiConfigExtras.cmake.in 634@@ -2,7 +2,7 @@ 635 !!IF !isEmpty(CMAKE_ANGLE_EGL_DLL_RELEASE) 636 637 !!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE) 638-set(Qt5Gui_EGL_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR/QtANGLE\") 639+set(Qt5Gui_EGL_INCLUDE_DIRS \"$$NIX_OUTPUT_DEV/$$CMAKE_INCLUDE_DIR/QtANGLE\") 640 !!ELSE 641 set(Qt5Gui_EGL_INCLUDE_DIRS \"$$CMAKE_INCLUDE_DIR/QtANGLE\") 642 !!ENDIF 643@@ -17,13 +17,13 @@ macro(_populate_qt5gui_gl_target_properties TargetName Configuration LIB_LOCATIO 644 set_property(TARGET Qt5::${TargetName} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) 645 646 !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) 647- set(imported_location \"${_qt5Gui_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") 648+ set(imported_location \"$$NIX_OUTPUT_OUT/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") 649 !!ELSE 650 set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\") 651 !!ENDIF 652 653 !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) 654- set(imported_implib \"${_qt5Gui_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") 655+ set(imported_implib \"$$NIX_OUTPUT_OUT/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") 656 !!ELSE 657 set(imported_implib \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") 658 !!ENDIF 659diff --git a/src/network/kernel/qdnslookup_unix.cpp b/src/network/kernel/qdnslookup_unix.cpp 660index 584f0b0f0e..24d80063f2 100644 661--- a/src/network/kernel/qdnslookup_unix.cpp 662+++ b/src/network/kernel/qdnslookup_unix.cpp 663@@ -83,7 +83,7 @@ static bool resolveLibraryInternal() 664 if (!lib.load()) 665 #endif 666 { 667- lib.setFileName(QLatin1String("resolv")); 668+ lib.setFileName(QLatin1String(NIXPKGS_LIBRESOLV)); 669 if (!lib.load()) 670 return false; 671 } 672diff --git a/src/network/kernel/qhostinfo_unix.cpp b/src/network/kernel/qhostinfo_unix.cpp 673index dabf1913cc..53bb867e07 100644 674--- a/src/network/kernel/qhostinfo_unix.cpp 675+++ b/src/network/kernel/qhostinfo_unix.cpp 676@@ -94,7 +94,7 @@ static bool resolveLibraryInternal() 677 if (!lib.load()) 678 #endif 679 { 680- lib.setFileName(QLatin1String("resolv")); 681+ lib.setFileName(QLatin1String(NIXPKGS_LIBRESOLV)); 682 if (!lib.load()) 683 return false; 684 } 685diff --git a/src/network/ssl/qsslcontext_openssl.cpp b/src/network/ssl/qsslcontext_openssl.cpp 686index 68caaeb6dc..fef4a81474 100644 687--- a/src/network/ssl/qsslcontext_openssl.cpp 688+++ b/src/network/ssl/qsslcontext_openssl.cpp 689@@ -340,7 +340,7 @@ init_context: 690 691 const QVector<QSslEllipticCurve> qcurves = sslContext->sslConfiguration.ellipticCurves(); 692 if (!qcurves.isEmpty()) { 693-#if OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC) 694+#if OPENSSL_VERSION_NUMBER >= 0x10002000L && defined(SSL_CTRL_SET_CURVES) && !defined(OPENSSL_NO_EC) 695 // Set the curves to be used 696 if (q_SSLeay() >= 0x10002000L) { 697 // SSL_CTX_ctrl wants a non-const pointer as last argument, 698@@ -354,7 +354,7 @@ init_context: 699 return sslContext; 700 } 701 } else 702-#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L && !defined(OPENSSL_NO_EC) 703+#endif // OPENSSL_VERSION_NUMBER >= 0x10002000L && defined(SSL_CTRL_SET_CURVES) && !defined(OPENSSL_NO_EC) 704 { 705 // specific curves requested, but not possible to set -> error 706 sslContext->errorStr = msgErrorSettingEllipticCurves(QSslSocket::tr("OpenSSL version too old, need at least v1.0.2")); 707diff --git a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp 708index 338c7ca3be..dd52114bac 100644 709--- a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp 710+++ b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp 711@@ -251,12 +251,9 @@ void TableGenerator::initPossibleLocations() 712 // the QTCOMPOSE environment variable 713 if (qEnvironmentVariableIsSet("QTCOMPOSE")) 714 m_possibleLocations.append(QString::fromLocal8Bit(qgetenv("QTCOMPOSE"))); 715- m_possibleLocations.append(QStringLiteral("/usr/share/X11/locale")); 716- m_possibleLocations.append(QStringLiteral("/usr/local/share/X11/locale")); 717- m_possibleLocations.append(QStringLiteral("/usr/lib/X11/locale")); 718- m_possibleLocations.append(QStringLiteral("/usr/local/lib/X11/locale")); 719 m_possibleLocations.append(QStringLiteral(X11_PREFIX "/share/X11/locale")); 720 m_possibleLocations.append(QStringLiteral(X11_PREFIX "/lib/X11/locale")); 721+ m_possibleLocations.append(QLatin1String(NIXPKGS_QTCOMPOSE)); 722 } 723 724 QString TableGenerator::findComposeFile() 725diff --git a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp 726index c2b7a562a9..4fa5f6d6a5 100644 727--- a/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp 728+++ b/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qglxintegration.cpp 729@@ -570,7 +570,14 @@ void (*QGLXContext::getProcAddress(const QByteArray &procName)) () 730 #ifndef QT_NO_LIBRARY 731 extern const QString qt_gl_library_name(); 732 // QLibrary lib(qt_gl_library_name()); 733+ // Check system library paths first 734 QLibrary lib(QLatin1String("GL")); 735+#ifdef NIXPKGS_MESA_GL 736+ if (!lib.load()) { 737+ // Fallback to Mesa driver 738+ lib.setFileName(QLatin1String(NIXPKGS_MESA_GL)); 739+ } 740+#endif // NIXPKGS_MESA_GL 741 glXGetProcAddressARB = (qt_glXGetProcAddressARB) lib.resolve("glXGetProcAddressARB"); 742 #endif 743 } 744diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp 745index 4646ced954..ff3111f393 100644 746--- a/src/plugins/platforms/xcb/qxcbcursor.cpp 747+++ b/src/plugins/platforms/xcb/qxcbcursor.cpp 748@@ -303,10 +303,10 @@ QXcbCursor::QXcbCursor(QXcbConnection *conn, QXcbScreen *screen) 749 #if defined(XCB_USE_XLIB) && !defined(QT_NO_LIBRARY) 750 static bool function_ptrs_not_initialized = true; 751 if (function_ptrs_not_initialized) { 752- QLibrary xcursorLib(QLatin1String("Xcursor"), 1); 753+ QLibrary xcursorLib(QLatin1String(NIXPKGS_LIBXCURSOR), 1); 754 bool xcursorFound = xcursorLib.load(); 755 if (!xcursorFound) { // try without the version number 756- xcursorLib.setFileName(QLatin1String("Xcursor")); 757+ xcursorLib.setFileName(QLatin1String(NIXPKGS_LIBXCURSOR)); 758 xcursorFound = xcursorLib.load(); 759 } 760 if (xcursorFound) { 761diff --git a/src/testlib/qtestassert.h b/src/testlib/qtestassert.h 762index ca3e02ca06..28dd73d772 100644 763--- a/src/testlib/qtestassert.h 764+++ b/src/testlib/qtestassert.h 765@@ -38,10 +38,13 @@ 766 767 QT_BEGIN_NAMESPACE 768 769- 770-#define QTEST_ASSERT(cond) do { if (!(cond)) qt_assert(#cond,__FILE__,__LINE__); } while (0) 771- 772-#define QTEST_ASSERT_X(cond, where, what) do { if (!(cond)) qt_assert_x(where, what,__FILE__,__LINE__); } while (0) 773+#if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS) 774+#define QTEST_ASSERT(cond) do { } while ((false) && (cond)) 775+#define QTEST_ASSERT_X(cond, where, what) do { } while ((false) && (cond)) 776+#else 777+#define QTEST_ASSERT(cond) do { if (!(cond)) qt_assert(#cond,__FILE__,__LINE__); } while (false) 778+#define QTEST_ASSERT_X(cond, where, what) do { if (!(cond)) qt_assert_x(where, what,__FILE__,__LINE__); } while (false) 779+#endif 780 781 QT_END_NAMESPACE 782 783diff --git a/src/widgets/Qt5WidgetsConfigExtras.cmake.in b/src/widgets/Qt5WidgetsConfigExtras.cmake.in 784index 99d87e2e46..a4eab2aa72 100644 785--- a/src/widgets/Qt5WidgetsConfigExtras.cmake.in 786+++ b/src/widgets/Qt5WidgetsConfigExtras.cmake.in 787@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::uic) 788 add_executable(Qt5::uic IMPORTED) 789 790 !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) 791- set(imported_location \"${_qt5Widgets_install_prefix}/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") 792+ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") 793 !!ELSE 794 set(imported_location \"$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") 795 !!ENDIF