diff options
author | Bastian Köcher <git@kchr.de> | 2018-12-14 08:41:46 +0100 |
---|---|---|
committer | Frederik Rietdijk <freddyrietdijk@fridh.nl> | 2018-12-19 09:15:14 +0100 |
commit | 8e811ec295424649bd7fca81ec136e2d28bf8230 (patch) | |
tree | 036f284a2a70112db234659128505c58d87c2e28 /pkgs/development/libraries/qt-5 | |
parent | 19f303a1447fbca039c070a5a42604d0ae6f791d (diff) | |
download | nixlib-8e811ec295424649bd7fca81ec136e2d28bf8230.tar nixlib-8e811ec295424649bd7fca81ec136e2d28bf8230.tar.gz nixlib-8e811ec295424649bd7fca81ec136e2d28bf8230.tar.bz2 nixlib-8e811ec295424649bd7fca81ec136e2d28bf8230.tar.lz nixlib-8e811ec295424649bd7fca81ec136e2d28bf8230.tar.xz nixlib-8e811ec295424649bd7fca81ec136e2d28bf8230.tar.zst nixlib-8e811ec295424649bd7fca81ec136e2d28bf8230.zip |
qt5: 5.11 -> 5.12
Diffstat (limited to 'pkgs/development/libraries/qt-5')
13 files changed, 1866 insertions, 3 deletions
diff --git a/pkgs/development/libraries/qt-5/5.12/default.nix b/pkgs/development/libraries/qt-5/5.12/default.nix new file mode 100644 index 000000000000..22535deb7678 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.12/default.nix @@ -0,0 +1,146 @@ +/* + +# Updates + +Before a major version update, make a copy of this directory. (We like to +keep the old version around for a short time after major updates.) Add a +top-level attribute to `top-level/all-packages.nix`. + +1. Update the URL in `pkgs/development/libraries/qt-5/$VERSION/fetch.sh`. +2. From the top of the Nixpkgs tree, run + `./maintainers/scripts/fetch-kde-qt.sh > pkgs/development/libraries/qt-5/$VERSION/srcs.nix`. +3. Update `qtCompatVersion` below if the minor version number changes. +4. Check that the new packages build correctly. +5. Commit the changes and open a pull request. + +*/ + +{ + newScope, + stdenv, fetchurl, fetchFromGitHub, makeSetupHook, + bison, cups ? null, harfbuzz, libGL, perl, + gstreamer, gst-plugins-base, gtk3, dconf, + cf-private, + + # options + developerBuild ? false, + decryptSslTraffic ? false, + debug ? false, +}: + +with stdenv.lib; + +let + + qtCompatVersion = "5.12"; + + mirror = "https://download.qt.io"; + srcs = import ./srcs.nix { inherit fetchurl; inherit mirror; } // { + # Community port of the now unmaintained upstream qtwebkit. + qtwebkit = { + src = fetchFromGitHub { + owner = "annulen"; + repo = "webkit"; + rev = "4ce8ebc4094512b9916bfa5984065e95ac97c9d8"; + sha256 = "05h1xnxzbf7sp3plw5dndsvpf6iigh0bi4vlj4svx0hkf1giakjf"; + }; + version = "5.212-alpha-01-26-2018"; + }; + }; + + patches = { + qtbase = [ + ./qtbase.patch + ./qtbase-darwin.patch + ./qtbase-revert-no-macos10.10.patch + ./qtbase-fixguicmake.patch + ] ++ optionals stdenv.isDarwin [ + ./qtbase-darwin-nseventtype.patch + ]; + qtdeclarative = [ ./qtdeclarative.patch ]; + qtscript = [ ./qtscript.patch ]; + qtserialport = [ ./qtserialport.patch ]; + qtwebkit = [ ./qtwebkit.patch ]; + }; + + mkDerivation = + import ../mkDerivation.nix + { inherit stdenv; inherit (stdenv) lib; } + { inherit debug; }; + + qtModule = + import ../qtModule.nix + { inherit mkDerivation perl; inherit (stdenv) lib; } + { inherit self srcs patches; }; + + addPackages = self: with self; + let + callPackage = self.newScope { inherit qtCompatVersion qtModule srcs; }; + in { + + inherit mkDerivation; + + qtbase = callPackage ../modules/qtbase.nix { + inherit (srcs.qtbase) src version; + patches = patches.qtbase; + inherit bison cups harfbuzz libGL; + withGtk3 = true; inherit dconf gtk3; + inherit developerBuild decryptSslTraffic; + }; + + qtcharts = callPackage ../modules/qtcharts.nix {}; + qtconnectivity = callPackage ../modules/qtconnectivity.nix {}; + qtdeclarative = callPackage ../modules/qtdeclarative.nix {}; + qtdoc = callPackage ../modules/qtdoc.nix {}; + qtgraphicaleffects = callPackage ../modules/qtgraphicaleffects.nix {}; + qtimageformats = callPackage ../modules/qtimageformats.nix {}; + qtlocation = callPackage ../modules/qtlocation.nix {}; + qtmacextras = callPackage ../modules/qtmacextras.nix { + inherit cf-private; + }; + qtmultimedia = callPackage ../modules/qtmultimedia.nix { + inherit gstreamer gst-plugins-base; + }; + qtquick1 = null; + qtquickcontrols = callPackage ../modules/qtquickcontrols.nix {}; + qtquickcontrols2 = callPackage ../modules/qtquickcontrols2.nix {}; + qtscript = callPackage ../modules/qtscript.nix {}; + qtsensors = callPackage ../modules/qtsensors.nix {}; + qtserialport = callPackage ../modules/qtserialport.nix {}; + qtspeech = callPackage ../modules/qtspeech.nix {}; + qtsvg = callPackage ../modules/qtsvg.nix {}; + qttools = callPackage ../modules/qttools.nix {}; + qttranslations = callPackage ../modules/qttranslations.nix {}; + qtvirtualkeyboard = callPackage ../modules/qtvirtualkeyboard.nix {}; + qtwayland = callPackage ../modules/qtwayland.nix {}; + qtwebchannel = callPackage ../modules/qtwebchannel.nix {}; + qtwebengine = callPackage ../modules/qtwebengine.nix {}; + qtwebglplugin = callPackage ../modules/qtwebglplugin.nix {}; + qtwebkit = callPackage ../modules/qtwebkit.nix {}; + qtwebsockets = callPackage ../modules/qtwebsockets.nix {}; + qtx11extras = callPackage ../modules/qtx11extras.nix {}; + qtxmlpatterns = callPackage ../modules/qtxmlpatterns.nix {}; + + env = callPackage ../qt-env.nix {}; + full = env "qt-full-${qtbase.version}" ([ + qtcharts qtconnectivity qtdeclarative qtdoc qtgraphicaleffects + qtimageformats qtlocation qtmultimedia qtquickcontrols qtquickcontrols2 + qtscript qtsensors qtserialport qtsvg qttools qttranslations + qtvirtualkeyboard qtwebchannel qtwebengine qtwebkit qtwebsockets + qtx11extras qtxmlpatterns + ] ++ optional (!stdenv.isDarwin) qtwayland + ++ optional (stdenv.isDarwin) qtmacextras); + + qmake = makeSetupHook { + deps = [ self.qtbase.dev ]; + substitutions = { + inherit (stdenv) isDarwin; + qtbase_dev = self.qtbase.dev; + fix_qt_builtin_paths = ../hooks/fix-qt-builtin-paths.sh; + }; + } ../hooks/qmake-hook.sh; + }; + + self = makeScope newScope addPackages; + +in self diff --git a/pkgs/development/libraries/qt-5/5.12/fetch.sh b/pkgs/development/libraries/qt-5/5.12/fetch.sh new file mode 100644 index 000000000000..b77a58cafa2e --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.12/fetch.sh @@ -0,0 +1,2 @@ +WGET_ARGS=( http://download.qt.io/official_releases/qt/5.12/5.12.0/submodules/ \ + -A '*.tar.xz' ) diff --git a/pkgs/development/libraries/qt-5/5.12/qtbase-darwin-nseventtype.patch b/pkgs/development/libraries/qt-5/5.12/qtbase-darwin-nseventtype.patch new file mode 100644 index 000000000000..9ef6e8ef0692 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.12/qtbase-darwin-nseventtype.patch @@ -0,0 +1,13 @@ +--- a/src/plugins/platforms/cocoa/qcocoawindow.mm ++++ b/src/plugins/platforms/cocoa/qcocoawindow.mm +@@ -404,8 +404,8 @@ void QCocoaWindow::setVisible(bool visible) + removeMonitor(); + monitor = [NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDownMask|NSRightMouseDownMask|NSOtherMouseDownMask|NSMouseMovedMask handler:^(NSEvent *e) { + QPointF localPoint = QCocoaScreen::mapFromNative([NSEvent mouseLocation]); +- const auto button = e.type == NSEventTypeMouseMoved ? Qt::NoButton : cocoaButton2QtButton([e buttonNumber]); +- const auto eventType = e.type == NSEventTypeMouseMoved ? QEvent::MouseMove : QEvent::MouseButtonPress; ++ const auto button = e.type == NSMouseMoved ? Qt::NoButton : cocoaButton2QtButton([e buttonNumber]); ++ const auto eventType = e.type == NSMouseMoved ? QEvent::MouseMove : QEvent::MouseButtonPress; + QWindowSystemInterface::handleMouseEvent(window(), window()->mapFromGlobal(localPoint.toPoint()), localPoint, + Qt::MouseButtons(uint(NSEvent.pressedMouseButtons & 0xFFFF)), button, eventType); + }]; diff --git a/pkgs/development/libraries/qt-5/5.12/qtbase-darwin.patch b/pkgs/development/libraries/qt-5/5.12/qtbase-darwin.patch new file mode 100644 index 000000000000..7ce27a99758e --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.12/qtbase-darwin.patch @@ -0,0 +1,70 @@ +diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm +index c3dd49ff3e..6871399817 100644 +--- a/src/plugins/bearer/corewlan/qcorewlanengine.mm ++++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm +@@ -283,7 +283,7 @@ void QScanThread::getUserConfigurations() + QMacAutoReleasePool pool; + userProfiles.clear(); + +- NSArray<NSString *> *wifiInterfaces = [CWWiFiClient interfaceNames]; ++ NSArray *wifiInterfaces = [CWWiFiClient interfaceNames]; + for (NSString *ifName in wifiInterfaces) { + + CWInterface *wifiInterface = [[CWWiFiClient sharedWiFiClient] interfaceWithName:ifName]; +@@ -598,7 +598,7 @@ void QCoreWlanEngine::doRequestUpdate() + + QMacAutoReleasePool pool; + +- NSArray<NSString *> *wifiInterfaces = [CWWiFiClient interfaceNames]; ++ NSArray *wifiInterfaces = [CWWiFiClient interfaceNames]; + for (NSString *ifName in wifiInterfaces) { + scanThread->interfaceName = QString::fromNSString(ifName); + scanThread->start(); +diff --git a/src/plugins/platforms/cocoa/qcocoascreen.mm b/src/plugins/platforms/cocoa/qcocoascreen.mm +index afe14e623c..74d69c2fa1 100644 +--- a/src/plugins/platforms/cocoa/qcocoascreen.mm ++++ b/src/plugins/platforms/cocoa/qcocoascreen.mm +@@ -127,7 +127,7 @@ void QCocoaScreen::updateProperties() + const qreal previousRefreshRate = m_refreshRate; + + // The reference screen for the geometry is always the primary screen +- QRectF primaryScreenGeometry = QRectF::fromCGRect([[NSScreen screens] firstObject].frame); ++ QRectF primaryScreenGeometry = QRectF::fromCGRect([[[NSScreen screens] firstObject] frame]); + m_geometry = qt_mac_flip(QRectF::fromCGRect(nsScreen.frame), primaryScreenGeometry).toRect(); + m_availableGeometry = qt_mac_flip(QRectF::fromCGRect(nsScreen.visibleFrame), primaryScreenGeometry).toRect(); + +diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm +index df1ad82592..0318a4ff96 100644 +--- a/src/plugins/platforms/cocoa/qcocoawindow.mm ++++ b/src/plugins/platforms/cocoa/qcocoawindow.mm +@@ -1704,7 +1704,7 @@ void QCocoaWindow::applyContentBorderThickness(NSWindow *window) + + if (!m_drawContentBorderGradient) { + window.styleMask = window.styleMask & ~NSWindowStyleMaskTexturedBackground; +- [window.contentView.superview setNeedsDisplay:YES]; ++ [[window.contentView superview] setNeedsDisplay:YES]; + window.titlebarAppearsTransparent = NO; + return; + } +diff --git a/src/plugins/platforms/cocoa/qnswindow.mm b/src/plugins/platforms/cocoa/qnswindow.mm +index c17ad47aba..a0f1dd38fb 100644 +--- a/src/plugins/platforms/cocoa/qnswindow.mm ++++ b/src/plugins/platforms/cocoa/qnswindow.mm +@@ -230,7 +230,7 @@ static bool isMouseEvent(NSEvent *ev) + if (pw->frameStrutEventsEnabled() && isMouseEvent(theEvent)) { + NSPoint loc = [theEvent locationInWindow]; + NSRect windowFrame = [self convertRectFromScreen:self.frame]; +- NSRect contentFrame = self.contentView.frame; ++ NSRect contentFrame = [self.contentView frame]; + if (NSMouseInRect(loc, windowFrame, NO) && !NSMouseInRect(loc, contentFrame, NO)) + [qnsview_cast(pw->view()) handleFrameStrutMouseEvent:theEvent]; + } +@@ -257,7 +257,7 @@ static bool isMouseEvent(NSEvent *ev) + + (void)applicationActivationChanged:(NSNotification*)notification + { + const id sender = self; +- NSEnumerator<NSWindow*> *windowEnumerator = nullptr; ++ NSEnumerator *windowEnumerator = nullptr; + NSApplication *application = [NSApplication sharedApplication]; + + // Unfortunately there's no NSWindowListOrderedBackToFront, diff --git a/pkgs/development/libraries/qt-5/5.12/qtbase-fixguicmake.patch b/pkgs/development/libraries/qt-5/5.12/qtbase-fixguicmake.patch new file mode 100644 index 000000000000..8b46d432812a --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.12/qtbase-fixguicmake.patch @@ -0,0 +1,30 @@ +diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in +index 0bbc871..3673634 100644 +--- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in ++++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in +@@ -286,7 +286,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) + macro(_populate_$${CMAKE_MODULE_NAME}_plugin_properties Plugin Configuration PLUGIN_LOCATION) + set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) + +- set(imported_location \"$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\") ++ set(imported_location \"${PLUGIN_LOCATION}\") + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) + set_target_properties(Qt5::${Plugin} PROPERTIES + \"IMPORTED_LOCATION_${Configuration}\" ${imported_location} +diff --git a/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in b/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in +index 5baf0fd..3583745 100644 +--- a/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in ++++ b/mkspecs/features/data/cmake/Qt5PluginTarget.cmake.in +@@ -2,10 +2,10 @@ + add_library(Qt5::$$CMAKE_PLUGIN_NAME MODULE IMPORTED) + + !!IF !isEmpty(CMAKE_RELEASE_TYPE) +-_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"$${CMAKE_PLUGIN_LOCATION_RELEASE}\") ++_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME RELEASE \"$${CMAKE_PLUGIN_DIR}$${CMAKE_PLUGIN_LOCATION_RELEASE}\") + !!ENDIF + !!IF !isEmpty(CMAKE_DEBUG_TYPE) +-_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"$${CMAKE_PLUGIN_LOCATION_DEBUG}\") ++_populate_$${CMAKE_MODULE_NAME}_plugin_properties($$CMAKE_PLUGIN_NAME DEBUG \"$${CMAKE_PLUGIN_DIR}$${CMAKE_PLUGIN_LOCATION_DEBUG}\") + !!ENDIF + + list(APPEND Qt5$${CMAKE_MODULE_NAME}_PLUGINS Qt5::$$CMAKE_PLUGIN_NAME) diff --git a/pkgs/development/libraries/qt-5/5.12/qtbase-revert-no-macos10.10.patch b/pkgs/development/libraries/qt-5/5.12/qtbase-revert-no-macos10.10.patch new file mode 100644 index 000000000000..29776518379d --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.12/qtbase-revert-no-macos10.10.patch @@ -0,0 +1,102 @@ +Revert "Remove code paths for macOS < 10.11" + +This reverts commit 138a65e0cfa80b13fd018a01e7d8b33341a3cfd3. + +From 138a65e0cfa80b13fd018a01e7d8b33341a3cfd3 Mon Sep 17 00:00:00 2001 +From: Jake Petroules <jake.petroules@qt.io> +Date: Thu, 8 Feb 2018 11:05:42 -0800 +Subject: [PATCH] Remove code paths for macOS < 10.11 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Change-Id: I5ae02d88aa3dcd97d1f2ebf6255a68643e5d6daa +Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> +Reviewed-by: Gabriel de Dietrich <gabriel.dedietrich@qt.io> +Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> +--- + .../fontdatabases/mac/qfontengine_coretext.mm | 16 +++------------- + src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm | 6 +----- + src/plugins/platforms/cocoa/qnswindowdelegate.mm | 16 ---------------- + 3 files changed, 4 insertions(+), 34 deletions(-) + +diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm +index 98b753eff9..489d9cd031 100644 +--- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm ++++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm +@@ -47,18 +47,28 @@ + + #include <cmath> + +-#if defined(Q_OS_MACOS) ++#if defined(Q_OS_OSX) && !QT_OSX_DEPLOYMENT_TARGET_BELOW(__MAC_10_11) + #import <AppKit/AppKit.h> + #endif + +-#if defined(QT_PLATFORM_UIKIT) ++#if defined(QT_PLATFORM_UIKIT) && !QT_IOS_DEPLOYMENT_TARGET_BELOW(__IPHONE_8_2) + #import <UIKit/UIKit.h> + #endif + + // These are available cross platform, exported as kCTFontWeightXXX from CoreText.framework, + // but they are not documented and are not in public headers so are private API and exposed + // only through the NSFontWeightXXX and UIFontWeightXXX aliases in AppKit and UIKit (rdar://26109857) +-#if defined(Q_OS_MACOS) ++#if QT_MAC_DEPLOYMENT_TARGET_BELOW(__MAC_10_11, __IPHONE_8_2) ++#define kCTFontWeightUltraLight -0.8 ++#define kCTFontWeightThin -0.6 ++#define kCTFontWeightLight -0.4 ++#define kCTFontWeightRegular 0 ++#define kCTFontWeightMedium 0.23 ++#define kCTFontWeightSemibold 0.3 ++#define kCTFontWeightBold 0.4 ++#define kCTFontWeightHeavy 0.56 ++#define kCTFontWeightBlack 0.62 ++#elif defined(Q_OS_OSX) + #define kCTFontWeightUltraLight NSFontWeightUltraLight + #define kCTFontWeightThin NSFontWeightThin + #define kCTFontWeightLight NSFontWeightLight +diff --git a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm +index 94f2125bad..272cd9f3dc 100644 +--- a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm ++++ b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm +@@ -162,7 +162,11 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QNSOpenSavePanelDelegate); + // resetting our mCurrentDir, set the delegate + // here to make sure it gets the correct value. + [mSavePanel setDelegate:self]; +- mOpenPanel.accessoryViewDisclosed = YES; ++ ++#if QT_OSX_PLATFORM_SDK_EQUAL_OR_ABOVE(__MAC_10_11) ++ if (__builtin_available(macOS 10.11, *)) ++ mOpenPanel.accessoryViewDisclosed = YES; ++#endif + + if (mOptions->isLabelExplicitlySet(QFileDialogOptions::Accept)) + [mSavePanel setPrompt:[self strip:options->labelText(QFileDialogOptions::Accept)]]; +diff --git a/src/plugins/platforms/cocoa/qnswindowdelegate.mm b/src/plugins/platforms/cocoa/qnswindowdelegate.mm +index 057a4c2943..eb55e50622 100644 +--- a/src/plugins/platforms/cocoa/qnswindowdelegate.mm ++++ b/src/plugins/platforms/cocoa/qnswindowdelegate.mm +@@ -103,6 +103,22 @@ static QRegExp whitespaceRegex = QRegExp(QStringLiteral("\\s*")); + return QCocoaScreen::mapToNative(maximizedFrame); + } + ++#if QT_MACOS_DEPLOYMENT_TARGET_BELOW(__MAC_10_11) ++/* ++ AppKit on OS X 10.10 wrongly calls windowWillUseStandardFrame:defaultFrame ++ from -[NSWindow _frameForFullScreenMode] when going into fullscreen, resulting ++ in black bars on top and bottom of the window. By implementing the following ++ method, AppKit will choose that instead, and resolve the right fullscreen ++ geometry. ++*/ ++- (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize ++{ ++ Q_UNUSED(proposedSize); ++ Q_ASSERT(window == m_cocoaWindow->nativeWindow()); ++ return NSSizeFromCGSize(m_cocoaWindow->screen()->geometry().size().toCGSize()); ++} ++#endif ++ + - (BOOL)window:(NSWindow *)window shouldPopUpDocumentPathMenu:(NSMenu *)menu + { + Q_UNUSED(window); diff --git a/pkgs/development/libraries/qt-5/5.12/qtbase.patch b/pkgs/development/libraries/qt-5/5.12/qtbase.patch new file mode 100644 index 000000000000..68ebd56b76c0 --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.12/qtbase.patch @@ -0,0 +1,1096 @@ +diff --git a/mkspecs/common/mac.conf b/mkspecs/common/mac.conf +index 61bea952b2..9909dae726 100644 +--- a/mkspecs/common/mac.conf ++++ b/mkspecs/common/mac.conf +@@ -23,7 +23,7 @@ QMAKE_INCDIR_OPENGL = \ + + QMAKE_FIX_RPATH = install_name_tool -id + +-QMAKE_LFLAGS_RPATH = -Wl,-rpath, ++QMAKE_LFLAGS_RPATH = + QMAKE_LFLAGS_GCSECTIONS = -Wl,-dead_strip + + QMAKE_LFLAGS_REL_RPATH = +diff --git a/mkspecs/features/create_cmake.prf b/mkspecs/features/create_cmake.prf +index 2ed708e085..05e60ff45f 100644 +--- a/mkspecs/features/create_cmake.prf ++++ b/mkspecs/features/create_cmake.prf +@@ -21,7 +21,7 @@ load(cmake_functions) + # at cmake time whether package has been found via a symlink, and correct + # that to an absolute path. This is only done for installations to + # the /usr or / prefix. +-CMAKE_INSTALL_LIBS_DIR = $$cmakeTargetPath($$[QT_INSTALL_LIBS]) ++CMAKE_INSTALL_LIBS_DIR = $$cmakeTargetPath($$NIX_OUTPUT_OUT/lib/) + contains(CMAKE_INSTALL_LIBS_DIR, ^(/usr)?/lib(64)?.*): CMAKE_USR_MOVE_WORKAROUND = $$CMAKE_INSTALL_LIBS_DIR + + CMAKE_OUT_DIR = $$MODULE_BASE_OUTDIR/lib/cmake +@@ -51,45 +51,20 @@ split_incpath { + $$cmake_extra_source_includes.output + } + +-CMAKE_INCLUDE_DIR = $$cmakeRelativePath($$[QT_INSTALL_HEADERS], $$[QT_INSTALL_PREFIX]) +-contains(CMAKE_INCLUDE_DIR, "^\\.\\./.*") { +- CMAKE_INCLUDE_DIR = $$[QT_INSTALL_HEADERS]/ +- CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True +-} ++CMAKE_INCLUDE_DIR = $$NIX_OUTPUT_DEV/include/ ++CMAKE_INCLUDE_DIR_IS_ABSOLUTE = True + +-CMAKE_LIB_DIR = $$cmakeRelativePath($$[QT_INSTALL_LIBS], $$[QT_INSTALL_PREFIX]) +-contains(CMAKE_LIB_DIR,"^\\.\\./.*") { +- CMAKE_LIB_DIR = $$[QT_INSTALL_LIBS]/ +- CMAKE_LIB_DIR_IS_ABSOLUTE = True +-} else { +- CMAKE_RELATIVE_INSTALL_LIBS_DIR = $$cmakeRelativePath($$[QT_INSTALL_PREFIX], $$[QT_INSTALL_LIBS]) +- # We need to go up another two levels because the CMake files are +- # installed in $${CMAKE_LIB_DIR}/cmake/Qt5$${CMAKE_MODULE_NAME} +- CMAKE_RELATIVE_INSTALL_DIR = "$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}../../" +-} ++CMAKE_BIN_DIR = $$NIX_OUTPUT_BIN/bin/ ++CMAKE_BIN_DIR_IS_ABSOLUTE = True + +-CMAKE_BIN_DIR = $$cmakeRelativePath($$[QT_HOST_BINS], $$[QT_INSTALL_PREFIX]) +-contains(CMAKE_BIN_DIR, "^\\.\\./.*") { +- CMAKE_BIN_DIR = $$[QT_HOST_BINS]/ +- CMAKE_BIN_DIR_IS_ABSOLUTE = True +-} ++CMAKE_LIB_DIR = $$NIX_OUTPUT_OUT/lib/ ++CMAKE_LIB_DIR_IS_ABSOLUTE = True + +-CMAKE_PLUGIN_DIR = $$cmakeRelativePath($$[QT_INSTALL_PLUGINS], $$[QT_INSTALL_PREFIX]) +-contains(CMAKE_PLUGIN_DIR, "^\\.\\./.*") { +- CMAKE_PLUGIN_DIR = $$[QT_INSTALL_PLUGINS]/ +- CMAKE_PLUGIN_DIR_IS_ABSOLUTE = True +-} +- +-win32:!static:!staticlib { +- CMAKE_DLL_DIR = $$cmakeRelativePath($$[QT_INSTALL_BINS], $$[QT_INSTALL_PREFIX]) +- contains(CMAKE_DLL_DIR, "^\\.\\./.*") { +- CMAKE_DLL_DIR = $$[QT_INSTALL_BINS]/ +- CMAKE_DLL_DIR_IS_ABSOLUTE = True +- } +-} else { +- CMAKE_DLL_DIR = $$CMAKE_LIB_DIR +- CMAKE_DLL_DIR_IS_ABSOLUTE = $$CMAKE_LIB_DIR_IS_ABSOLUTE +-} ++CMAKE_PLUGIN_DIR = $$NIX_OUTPUT_PLUGIN/ ++CMAKE_PLUGIN_DIR_IS_ABSOLUTE = True ++ ++CMAKE_DLL_DIR = $$NIX_OUTPUT_OUT/lib/ ++CMAKE_DLL_DIR_IS_ABSOLUTE = True + + static|staticlib:CMAKE_STATIC_TYPE = true + +@@ -169,7 +144,7 @@ contains(CONFIG, plugin) { + cmake_target_file + + cmake_qt5_plugin_file.files = $$cmake_target_file.output +- cmake_qt5_plugin_file.path = $$[QT_INSTALL_LIBS]/cmake/Qt5$${CMAKE_MODULE_NAME} ++ cmake_qt5_plugin_file.path = $$NIX_OUTPUT_OUT/lib/cmake/Qt5$${CMAKE_MODULE_NAME} + INSTALLS += cmake_qt5_plugin_file + + return() +@@ -316,7 +291,7 @@ exists($$cmake_macros_file.input) { + cmake_qt5_module_files.files += $$cmake_macros_file.output + } + +-cmake_qt5_module_files.path = $$[QT_INSTALL_LIBS]/cmake/Qt5$${CMAKE_MODULE_NAME} ++cmake_qt5_module_files.path = $$NIX_OUTPUT_OUT/lib/cmake/Qt5$${CMAKE_MODULE_NAME} + + # We are generating cmake files. Most developers of Qt are not aware of cmake, + # so we require automatic tests to be available. The only module which should +diff --git a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in +index 3ed6dd5889..4c7c8da21a 100644 +--- a/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in ++++ b/mkspecs/features/data/cmake/Qt5BasicConfig.cmake.in +@@ -3,30 +3,6 @@ if (CMAKE_VERSION VERSION_LESS 3.1.0) + message(FATAL_ERROR \"Qt 5 $${CMAKE_MODULE_NAME} module requires at least CMake version 3.1.0\") + endif() + +-!!IF !isEmpty(CMAKE_USR_MOVE_WORKAROUND) +-!!IF !isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +-set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\") +-!!ELSE +-get_filename_component(_IMPORT_PREFIX \"${CMAKE_CURRENT_LIST_FILE}\" PATH) +-# Use original install prefix when loaded through a +-# cross-prefix symbolic link such as /lib -> /usr/lib. +-get_filename_component(_realCurr \"${_IMPORT_PREFIX}\" REALPATH) +-get_filename_component(_realOrig \"$$CMAKE_INSTALL_LIBS_DIR/cmake/Qt5$${CMAKE_MODULE_NAME}\" REALPATH) +-if(_realCurr STREQUAL _realOrig) +- get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$CMAKE_INSTALL_LIBS_DIR/$${CMAKE_RELATIVE_INSTALL_LIBS_DIR}\" ABSOLUTE) +-else() +- get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) +-endif() +-unset(_realOrig) +-unset(_realCurr) +-unset(_IMPORT_PREFIX) +-!!ENDIF +-!!ELIF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +-get_filename_component(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"${CMAKE_CURRENT_LIST_DIR}/$${CMAKE_RELATIVE_INSTALL_DIR}\" ABSOLUTE) +-!!ELSE +-set(_qt5$${CMAKE_MODULE_NAME}_install_prefix \"$$[QT_INSTALL_PREFIX]\") +-!!ENDIF +- + !!IF !equals(TEMPLATE, aux) + # For backwards compatibility only. Use Qt5$${CMAKE_MODULE_NAME}_VERSION instead. + set(Qt5$${CMAKE_MODULE_NAME}_VERSION_STRING "$$eval(QT.$${MODULE}.VERSION)") +@@ -52,11 +28,7 @@ endmacro() + macro(_populate_$${CMAKE_MODULE_NAME}_target_properties Configuration LIB_LOCATION IMPLIB_LOCATION) + set_property(TARGET Qt5::$${CMAKE_MODULE_NAME} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) + +-!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) +- set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") +-!!ELSE + set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\") +-!!ENDIF + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) + set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES + \"INTERFACE_LINK_LIBRARIES\" \"${_Qt5$${CMAKE_MODULE_NAME}_LIB_DEPENDENCIES}\" +@@ -69,11 +41,7 @@ macro(_populate_$${CMAKE_MODULE_NAME}_target_properties Configuration LIB_LOCATI + ) + + !!IF !isEmpty(CMAKE_WINDOWS_BUILD) +-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +- set(imported_implib \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") +-!!ELSE + set(imported_implib \"IMPORTED_IMPLIB_${Configuration}\" \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") +-!!ENDIF + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_implib}) + if(NOT \"${IMPLIB_LOCATION}\" STREQUAL \"\") + set_target_properties(Qt5::$${CMAKE_MODULE_NAME} PROPERTIES +@@ -89,24 +57,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) + !!IF !no_module_headers + !!IF !isEmpty(CMAKE_BUILD_IS_FRAMEWORK) + set(_Qt5$${CMAKE_MODULE_NAME}_OWN_INCLUDE_DIRS +- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\" +- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\" ++ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework\" ++ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Headers\" + ) + !!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS +- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\" +- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\" +- ) +-!!ELSE +- set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") +-!!ENDIF +-!!ELSE +-!!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE) +- 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}\") +-!!IF isEmpty(CMAKE_NO_PRIVATE_INCLUDES) +- set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS +- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION\" +- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_INCLUDE_DIR}$${MODULE_INCNAME}/$$VERSION/$${MODULE_INCNAME}\" ++ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/\" ++ \"$${CMAKE_LIB_DIR}Qt$${CMAKE_MODULE_NAME}.framework/Versions/$$section(VERSION, ., 0, 0)/Headers/$$VERSION/$${MODULE_INCNAME}\" + ) + !!ELSE + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") +@@ -122,7 +79,6 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) + set(Qt5$${CMAKE_MODULE_NAME}_PRIVATE_INCLUDE_DIRS \"\") + !!ENDIF + !!ENDIF +-!!ENDIF + !!IF !isEmpty(CMAKE_ADD_SOURCE_INCLUDE_DIRS) + include(\"${CMAKE_CURRENT_LIST_DIR}/ExtraSourceIncludes.cmake\" OPTIONAL) + !!ENDIF +@@ -272,25 +228,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) + !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD) + !!IF isEmpty(CMAKE_DEBUG_TYPE) + !!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) +-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +- if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +-!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE + if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +-!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE + _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" \"\" ) + !!ELSE // CMAKE_STATIC_WINDOWS_BUILD + if (EXISTS +-!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) +- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" +-!!ELSE + \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" +-!!ENDIF + AND EXISTS +-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +-!!ELSE + \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) +-!!ENDIF + _populate_$${CMAKE_MODULE_NAME}_target_properties(DEBUG \"$${CMAKE_LIB_FILE_LOCATION_DEBUG}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_DEBUG}\" ) + !!ENDIF // CMAKE_STATIC_WINDOWS_BUILD + endif() +@@ -309,25 +253,13 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) + !!IF !isEmpty(CMAKE_FIND_OTHER_LIBRARY_BUILD) + !!IF isEmpty(CMAKE_RELEASE_TYPE) + !!IF !isEmpty(CMAKE_STATIC_WINDOWS_BUILD) +-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +- if (EXISTS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +-!!ELSE // CMAKE_LIB_DIR_IS_ABSOLUTE + if (EXISTS \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +-!!ENDIF // CMAKE_LIB_DIR_IS_ABSOLUTE + _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" \"\" ) + !!ELSE // CMAKE_STATIC_WINDOWS_BUILD + if (EXISTS +-!!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) +- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_DLL_DIR}$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" +-!!ELSE + \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" +-!!ENDIF + AND EXISTS +-!!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +- \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +-!!ELSE + \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) +-!!ENDIF + _populate_$${CMAKE_MODULE_NAME}_target_properties(RELEASE \"$${CMAKE_LIB_FILE_LOCATION_RELEASE}\" \"$${CMAKE_IMPLIB_FILE_LOCATION_RELEASE}\" ) + !!ENDIF // CMAKE_STATIC_WINDOWS_BUILD + endif() +@@ -346,11 +278,7 @@ if (NOT TARGET Qt5::$${CMAKE_MODULE_NAME}) + macro(_populate_$${CMAKE_MODULE_NAME}_plugin_properties Plugin Configuration PLUGIN_LOCATION) + set_property(TARGET Qt5::${Plugin} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) + +-!!IF isEmpty(CMAKE_PLUGIN_DIR_IS_ABSOLUTE) +- set(imported_location \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\") +-!!ELSE + set(imported_location \"$${CMAKE_PLUGIN_DIR}${PLUGIN_LOCATION}\") +-!!ENDIF + _qt5_$${CMAKE_MODULE_NAME}_check_file_exists(${imported_location}) + set_target_properties(Qt5::${Plugin} PROPERTIES + \"IMPORTED_LOCATION_${Configuration}\" ${imported_location} +diff --git a/mkspecs/features/mac/default_post.prf b/mkspecs/features/mac/default_post.prf +index 99f68b78f5..dde69cb7c2 100644 +--- a/mkspecs/features/mac/default_post.prf ++++ b/mkspecs/features/mac/default_post.prf +@@ -63,199 +63,3 @@ qt { + } + } + } +- +-# Add the same default rpaths as Xcode does for new projects. +-# This is especially important for iOS/tvOS/watchOS where no other option is possible. +-!no_default_rpath { +- QMAKE_RPATHDIR += @executable_path/Frameworks +- equals(TEMPLATE, lib):!plugin:lib_bundle: QMAKE_RPATHDIR += @loader_path/Frameworks +-} +- +-# Don't pass -headerpad_max_install_names when using Bitcode. +-# In that case the linker emits a warning stating that the flag is ignored when +-# used with bitcode, for reasons that cannot be determined (rdar://problem/20748962). +-# Using this flag is also unnecessary in practice on UIKit platforms since they +-# are sandboxed, and only UIKit platforms support bitcode to begin with. +-!bitcode: QMAKE_LFLAGS += $$QMAKE_LFLAGS_HEADERPAD +- +-app_extension_api_only { +- QMAKE_CFLAGS += $$QMAKE_CFLAGS_APPLICATION_EXTENSION +- QMAKE_CXXFLAGS += $$QMAKE_CFLAGS_APPLICATION_EXTENSION +- QMAKE_CXXFLAGS_PRECOMPILE += $$QMAKE_CFLAGS_APPLICATION_EXTENSION +- QMAKE_LFLAGS += $$QMAKE_CFLAGS_APPLICATION_EXTENSION +-} +- +-macx-xcode { +- qmake_pkginfo_typeinfo.name = QMAKE_PKGINFO_TYPEINFO +- !isEmpty(QMAKE_PKGINFO_TYPEINFO): \ +- qmake_pkginfo_typeinfo.value = $$QMAKE_PKGINFO_TYPEINFO +- else: \ +- qmake_pkginfo_typeinfo.value = "????" +- QMAKE_MAC_XCODE_SETTINGS += qmake_pkginfo_typeinfo +- +- !isEmpty(VERSION) { +- l = $$split(VERSION, '.') 0 0 # make sure there are at least three +- VER_MAJ = $$member(l, 0, 0) +- VER_MIN = $$member(l, 1, 1) +- VER_PAT = $$member(l, 2, 2) +- unset(l) +- +- qmake_full_version.name = QMAKE_FULL_VERSION +- qmake_full_version.value = $${VER_MAJ}.$${VER_MIN}.$${VER_PAT} +- QMAKE_MAC_XCODE_SETTINGS += qmake_full_version +- +- qmake_short_version.name = QMAKE_SHORT_VERSION +- qmake_short_version.value = $${VER_MAJ}.$${VER_MIN} +- QMAKE_MAC_XCODE_SETTINGS += qmake_short_version +- } +- +- !isEmpty(QMAKE_XCODE_DEBUG_INFORMATION_FORMAT) { +- debug_information_format.name = DEBUG_INFORMATION_FORMAT +- debug_information_format.value = $$QMAKE_XCODE_DEBUG_INFORMATION_FORMAT +- debug_information_format.build = debug +- QMAKE_MAC_XCODE_SETTINGS += debug_information_format +- } +- +- QMAKE_XCODE_ARCHS = +- +- arch_device.name = "ARCHS[sdk=$${device.sdk}*]" +- arch_device.value = $$QMAKE_APPLE_DEVICE_ARCHS +- QMAKE_XCODE_ARCHS += $$QMAKE_APPLE_DEVICE_ARCHS +- QMAKE_MAC_XCODE_SETTINGS += arch_device +- +- simulator { +- arch_simulator.name = "ARCHS[sdk=$${simulator.sdk}*]" +- arch_simulator.value = $$QMAKE_APPLE_SIMULATOR_ARCHS +- QMAKE_XCODE_ARCHS += $$QMAKE_APPLE_SIMULATOR_ARCHS +- QMAKE_MAC_XCODE_SETTINGS += arch_simulator +- } +- +- only_active_arch.name = ONLY_ACTIVE_ARCH +- only_active_arch.value = YES +- only_active_arch.build = debug +- QMAKE_MAC_XCODE_SETTINGS += only_active_arch +-} else { +- device|!simulator: VALID_DEVICE_ARCHS = $$QMAKE_APPLE_DEVICE_ARCHS +- simulator: VALID_SIMULATOR_ARCHS = $$QMAKE_APPLE_SIMULATOR_ARCHS +- VALID_ARCHS = $$VALID_DEVICE_ARCHS $$VALID_SIMULATOR_ARCHS +- +- isEmpty(VALID_ARCHS): \ +- error("QMAKE_APPLE_DEVICE_ARCHS or QMAKE_APPLE_SIMULATOR_ARCHS must contain at least one architecture") +- +- single_arch: VALID_ARCHS = $$first(VALID_ARCHS) +- +- ACTIVE_ARCHS = $(filter $(EXPORT_VALID_ARCHS), $(ARCHS)) +- ARCH_ARGS = $(foreach arch, $(if $(EXPORT_ACTIVE_ARCHS), $(EXPORT_ACTIVE_ARCHS), $(EXPORT_VALID_ARCHS)), -arch $(arch)) +- +- QMAKE_EXTRA_VARIABLES += VALID_ARCHS ACTIVE_ARCHS ARCH_ARGS +- +- arch_flags = $(EXPORT_ARCH_ARGS) +- +- QMAKE_CFLAGS += $$arch_flags +- QMAKE_CXXFLAGS += $$arch_flags +- QMAKE_LFLAGS += $$arch_flags +- +- QMAKE_PCH_ARCHS = $$VALID_ARCHS +- +- macos: deployment_target = $$QMAKE_MACOSX_DEPLOYMENT_TARGET +- ios: deployment_target = $$QMAKE_IOS_DEPLOYMENT_TARGET +- tvos: deployment_target = $$QMAKE_TVOS_DEPLOYMENT_TARGET +- watchos: deployment_target = $$QMAKE_WATCHOS_DEPLOYMENT_TARGET +- +- # If we're doing a simulator and device build, device and simulator +- # architectures use different paths and flags for the sysroot and +- # deployment target switch, so we must multiplex them across multiple +- # architectures using -Xarch. Otherwise we fall back to the simple path. +- # This is not strictly necessary, but results in cleaner command lines +- # and makes it easier for people to override EXPORT_VALID_ARCHS to limit +- # individual rules to a different set of architecture(s) from the overall +- # build (such as machtest in QtCore). +- simulator:device { +- QMAKE_XARCH_CFLAGS = +- QMAKE_XARCH_LFLAGS = +- QMAKE_EXTRA_VARIABLES += QMAKE_XARCH_CFLAGS QMAKE_XARCH_LFLAGS +- +- for (arch, VALID_ARCHS) { +- contains(VALID_SIMULATOR_ARCHS, $$arch) { +- sdk = $$simulator.sdk +- version_identifier = $$simulator.deployment_identifier +- } else { +- sdk = $$device.sdk +- version_identifier = $$device.deployment_identifier +- } +- +- version_min_flags = \ +- -Xarch_$${arch} \ +- -m$${version_identifier}-version-min=$$deployment_target +- QMAKE_XARCH_CFLAGS_$${arch} = $$version_min_flags \ +- -Xarch_$${arch} \ +- -isysroot$$xcodeSDKInfo(Path, $$sdk) +- QMAKE_XARCH_LFLAGS_$${arch} = $$version_min_flags \ +- -Xarch_$${arch} \ +- -Wl,-syslibroot,$$xcodeSDKInfo(Path, $$sdk) +- +- QMAKE_XARCH_CFLAGS += $(EXPORT_QMAKE_XARCH_CFLAGS_$${arch}) +- QMAKE_XARCH_LFLAGS += $(EXPORT_QMAKE_XARCH_LFLAGS_$${arch}) +- +- QMAKE_EXTRA_VARIABLES += \ +- QMAKE_XARCH_CFLAGS_$${arch} \ +- QMAKE_XARCH_LFLAGS_$${arch} +- } +- +- QMAKE_CFLAGS += $(EXPORT_QMAKE_XARCH_CFLAGS) +- QMAKE_CXXFLAGS += $(EXPORT_QMAKE_XARCH_CFLAGS) +- QMAKE_LFLAGS += $(EXPORT_QMAKE_XARCH_LFLAGS) +- } else { +- simulator: \ +- version_identifier = $$simulator.deployment_identifier +- else: \ +- version_identifier = $$device.deployment_identifier +- version_min_flag = -m$${version_identifier}-version-min=$$deployment_target +- QMAKE_CFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH $$version_min_flag +- QMAKE_CXXFLAGS += -isysroot $$QMAKE_MAC_SDK_PATH $$version_min_flag +- QMAKE_LFLAGS += -Wl,-syslibroot,$$QMAKE_MAC_SDK_PATH $$version_min_flag +- } +- +- # Enable precompiled headers for multiple architectures +- QMAKE_CFLAGS_USE_PRECOMPILE = +- for (arch, VALID_ARCHS) { +- icc_pch_style: \ +- use_flag = "-pch-use " +- else: \ +- use_flag = -include +- +- # Only use Xarch with multi-arch, as the option confuses ccache +- count(VALID_ARCHS, 1, greaterThan): \ +- QMAKE_CFLAGS_USE_PRECOMPILE += \ +- -Xarch_$${arch} +- +- QMAKE_CFLAGS_USE_PRECOMPILE += \ +- $${use_flag}${QMAKE_PCH_OUTPUT_$${arch}} +- } +- icc_pch_style { +- QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE -include ${QMAKE_PCH_INPUT} +- QMAKE_CFLAGS_USE_PRECOMPILE = +- } else { +- QMAKE_CXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE +- QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE +- QMAKE_OBJCXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE +- } +- +- QMAKE_PCH_OUTPUT_EXT = _${QMAKE_PCH_ARCH}$${QMAKE_PCH_OUTPUT_EXT} +-} +- +-cache(QMAKE_XCODE_DEVELOPER_PATH, stash) +-!isEmpty(QMAKE_XCODE_VERSION): \ +- cache(QMAKE_XCODE_VERSION, stash) +- +-QMAKE_XCODE_LIBRARY_SUFFIX = $$qtPlatformTargetSuffix() +- +-xcode_product_bundle_identifier_setting.name = PRODUCT_BUNDLE_IDENTIFIER +-xcode_product_bundle_identifier_setting.value = $$QMAKE_TARGET_BUNDLE_PREFIX +-isEmpty(xcode_product_bundle_identifier_setting.value): \ +- xcode_product_bundle_identifier_setting.value = "com.yourcompany" +-xcode_product_bundle_target = $$QMAKE_BUNDLE +-isEmpty(xcode_product_bundle_target): \ +- xcode_product_bundle_target = ${PRODUCT_NAME:rfc1034identifier} +-xcode_product_bundle_identifier_setting.value = "$${xcode_product_bundle_identifier_setting.value}.$${xcode_product_bundle_target}" +-QMAKE_MAC_XCODE_SETTINGS += xcode_product_bundle_identifier_setting +diff --git a/mkspecs/features/mac/default_pre.prf b/mkspecs/features/mac/default_pre.prf +index e3534561a5..3b01424e67 100644 +--- a/mkspecs/features/mac/default_pre.prf ++++ b/mkspecs/features/mac/default_pre.prf +@@ -1,60 +1,2 @@ + CONFIG = asset_catalogs rez $$CONFIG + load(default_pre) +- +-isEmpty(QMAKE_XCODE_DEVELOPER_PATH) { +- # Get path of Xcode's Developer directory +- QMAKE_XCODE_DEVELOPER_PATH = $$system("/usr/bin/xcode-select --print-path 2>/dev/null") +- isEmpty(QMAKE_XCODE_DEVELOPER_PATH): \ +- error("Xcode path is not set. Please use xcode-select to choose Xcode installation path.") +- +- # Make sure Xcode path is valid +- !exists($$QMAKE_XCODE_DEVELOPER_PATH): \ +- error("Xcode is not installed in $${QMAKE_XCODE_DEVELOPER_PATH}. Please use xcode-select to choose Xcode installation path.") +-} +- +-isEmpty(QMAKE_XCODEBUILD_PATH): \ +- QMAKE_XCODEBUILD_PATH = $$system("/usr/bin/xcrun -find xcodebuild 2>/dev/null") +- +-!isEmpty(QMAKE_XCODEBUILD_PATH) { +- # Make sure Xcode is set up properly +- !system("/usr/bin/xcrun xcodebuild -license check 2>/dev/null"): \ +- error("Xcode not set up properly. You need to confirm the license agreement by running 'sudo xcrun xcodebuild -license accept'.") +- +- isEmpty(QMAKE_XCODE_VERSION) { +- # Extract Xcode version using xcodebuild +- xcode_version = $$system("/usr/bin/xcrun xcodebuild -version") +- QMAKE_XCODE_VERSION = $$member(xcode_version, 1) +- isEmpty(QMAKE_XCODE_VERSION): error("Could not resolve Xcode version.") +- unset(xcode_version) +- } +-} +- +-isEmpty(QMAKE_TARGET_BUNDLE_PREFIX) { +- QMAKE_XCODE_PREFERENCES_FILE = $$(HOME)/Library/Preferences/com.apple.dt.Xcode.plist +- exists($$QMAKE_XCODE_PREFERENCES_FILE): \ +- QMAKE_TARGET_BUNDLE_PREFIX = $$system("/usr/libexec/PlistBuddy -c 'print IDETemplateOptions:bundleIdentifierPrefix' $$QMAKE_XCODE_PREFERENCES_FILE 2>/dev/null") +- +- !isEmpty(_QMAKE_CACHE_):!isEmpty(QMAKE_TARGET_BUNDLE_PREFIX): \ +- cache(QMAKE_TARGET_BUNDLE_PREFIX) +-} +- +-QMAKE_ASSET_CATALOGS_APP_ICON = AppIcon +- +-# Make the default debug info format for static debug builds +-# DWARF instead of DWARF with dSYM. This cuts down build times +-# for application debug builds significantly, as Xcode doesn't +-# have to pull out all the DWARF info from the Qt static libs +-# and put it into a dSYM file. We don't need that dSYM file in +-# the first place, since the information is available in the +-# object files inside the archives (static libraries). +-macx-xcode:qtConfig(static): \ +- QMAKE_XCODE_DEBUG_INFORMATION_FORMAT = dwarf +- +-# This variable is used by the xcode_dynamic_library_suffix +-# feature, which allows Xcode to choose the Qt libraries to link to +-# at build time, depending on the current Xcode SDK and configuration. +-QMAKE_XCODE_LIBRARY_SUFFIX_SETTING = QT_LIBRARY_SUFFIX +- +-xcode_copy_phase_strip_setting.name = COPY_PHASE_STRIP +-xcode_copy_phase_strip_setting.value = NO +-QMAKE_MAC_XCODE_SETTINGS += xcode_copy_phase_strip_setting +diff --git a/mkspecs/features/mac/sdk.prf b/mkspecs/features/mac/sdk.prf +index 8360dd8b38..8b13789179 100644 +--- a/mkspecs/features/mac/sdk.prf ++++ b/mkspecs/features/mac/sdk.prf +@@ -1,58 +1 @@ + +-isEmpty(QMAKE_MAC_SDK): \ +- error("QMAKE_MAC_SDK must be set when using CONFIG += sdk.") +- +-contains(QMAKE_MAC_SDK, .*/.*): \ +- error("QMAKE_MAC_SDK can only contain short-form SDK names (eg. macosx, iphoneos)") +- +-defineReplace(xcodeSDKInfo) { +- info = $$1 +- equals(info, "Path"): \ +- infoarg = --show-sdk-path +- equals(info, "PlatformPath"): \ +- infoarg = --show-sdk-platform-path +- equals(info, "SDKVersion"): \ +- infoarg = --show-sdk-version +- sdk = $$2 +- isEmpty(sdk): \ +- sdk = $$QMAKE_MAC_SDK +- +- isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}) { +- QMAKE_MAC_SDK.$${sdk}.$${info} = $$system("/usr/bin/xcrun --sdk $$sdk $$infoarg 2>/dev/null") +- # --show-sdk-platform-path won't work for Command Line Tools; this is fine +- # only used by the XCTest backend to testlib +- isEmpty(QMAKE_MAC_SDK.$${sdk}.$${info}):if(!isEmpty(QMAKE_XCODEBUILD_PATH)|!equals(infoarg, "--show-sdk-platform-path")): \ +- error("Could not resolve SDK $$info for \'$$sdk\' using $$infoarg") +- cache(QMAKE_MAC_SDK.$${sdk}.$${info}, set stash, QMAKE_MAC_SDK.$${sdk}.$${info}) +- } +- +- return($$eval(QMAKE_MAC_SDK.$${sdk}.$${info})) +-} +- +-QMAKE_MAC_SDK_PATH = $$xcodeSDKInfo(Path) +-QMAKE_MAC_SDK_PLATFORM_PATH = $$xcodeSDKInfo(PlatformPath) +-QMAKE_MAC_SDK_VERSION = $$xcodeSDKInfo(SDKVersion) +- +-sysrootified = +-for(val, QMAKE_INCDIR_OPENGL): sysrootified += $${QMAKE_MAC_SDK_PATH}$$val +-QMAKE_INCDIR_OPENGL = $$sysrootified +- +-QMAKESPEC_NAME = $$basename(QMAKESPEC) +- +-# Resolve SDK version of various tools +-for(tool, $$list(QMAKE_CC QMAKE_CXX QMAKE_FIX_RPATH QMAKE_AR QMAKE_RANLIB QMAKE_LINK QMAKE_LINK_SHLIB QMAKE_ACTOOL QMAKE_LINK_C QMAKE_LINK_C_SHLIB)) { +- tool_variable = QMAKE_MAC_SDK.$${QMAKESPEC_NAME}.$${QMAKE_MAC_SDK}.$${tool} +- !isEmpty($$tool_variable) { +- $$tool = $$eval($$tool_variable) +- next() +- } +- +- value = $$eval($$tool) +- isEmpty(value): next() +- +- sysrooted = $$system("/usr/bin/xcrun -sdk $$QMAKE_MAC_SDK -find $$first(value) 2>/dev/null") +- isEmpty(sysrooted): next() +- +- $$tool = $$sysrooted $$member(value, 1, -1) +- cache($$tool_variable, set stash, $$tool) +-} +diff --git a/mkspecs/features/qml_module.prf b/mkspecs/features/qml_module.prf +index 65212b2abf..accd4c07f0 100644 +--- a/mkspecs/features/qml_module.prf ++++ b/mkspecs/features/qml_module.prf +@@ -52,7 +52,7 @@ qmldir.base = $$_PRO_FILE_PWD_ + # Tools need qmldir and plugins.qmltypes always installed on the file system + qmldir.files = $$qmldir_file $$fq_aux_qml_files + install_qml_files: qmldir.files += $$fq_qml_files +-qmldir.path = $$instbase/$$TARGETPATH ++qmldir.path = $$NIX_OUTPUT_QML/$$TARGETPATH + INSTALLS += qmldir + + !debug_and_release|!build_all|CONFIG(release, debug|release) { +diff --git a/mkspecs/features/qml_plugin.prf b/mkspecs/features/qml_plugin.prf +index cd6377dcc6..e98bf98151 100644 +--- a/mkspecs/features/qml_plugin.prf ++++ b/mkspecs/features/qml_plugin.prf +@@ -56,7 +56,7 @@ qml1_target { + instbase = $$[QT_INSTALL_QML] + } + +-target.path = $$instbase/$$TARGETPATH ++target.path = $$NIX_OUTPUT_QML/$$TARGETPATH + INSTALLS += target + + # Some final setup +diff --git a/mkspecs/features/qt_app.prf b/mkspecs/features/qt_app.prf +index 8354f30eea..62028fef8e 100644 +--- a/mkspecs/features/qt_app.prf ++++ b/mkspecs/features/qt_app.prf +@@ -30,7 +30,7 @@ host_build:force_bootstrap { + target.path = $$[QT_HOST_BINS] + } else { + !build_pass:qtConfig(debug_and_release): CONFIG += release +- target.path = $$[QT_INSTALL_BINS] ++ target.path = $$NIX_OUTPUT_BIN/bin + CONFIG += relative_qt_rpath # Qt's tools and apps should be relocatable + } + INSTALLS += target +diff --git a/mkspecs/features/qt_build_paths.prf b/mkspecs/features/qt_build_paths.prf +index 3bb3823a8e..655b7b7db8 100644 +--- a/mkspecs/features/qt_build_paths.prf ++++ b/mkspecs/features/qt_build_paths.prf +@@ -24,6 +24,6 @@ exists($$MODULE_BASE_INDIR/.git): \ + !force_independent { + # If the module is not built independently, everything ends up in qtbase. + # This is the case in non-prefix builds, except for selected modules. +- MODULE_BASE_OUTDIR = $$[QT_HOST_PREFIX] +- MODULE_QMAKE_OUTDIR = $$[QT_HOST_PREFIX] ++ MODULE_BASE_OUTDIR = $$NIX_OUTPUT_OUT ++ MODULE_QMAKE_OUTDIR = $$NIX_OUTPUT_OUT + } +diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf +index 4ad9946ae0..6d66f29c26 100644 +--- a/mkspecs/features/qt_common.prf ++++ b/mkspecs/features/qt_common.prf +@@ -34,8 +34,8 @@ contains(TEMPLATE, .*lib) { + qqt_libdir = \$\$\$\$[QT_HOST_LIBS] + qt_libdir = $$[QT_HOST_LIBS] + } else { +- qqt_libdir = \$\$\$\$[QT_INSTALL_LIBS] +- qt_libdir = $$[QT_INSTALL_LIBS] ++ qqt_libdir = \$\$\$\$NIX_OUTPUT_OUT/lib ++ qt_libdir = $$NIX_OUTPUT_OUT/lib + } + contains(QMAKE_DEFAULT_LIBDIRS, $$qt_libdir) { + lib_replace.match = "[^ ']*$$rplbase/lib" +diff --git a/mkspecs/features/qt_docs.prf b/mkspecs/features/qt_docs.prf +index 3139c443c6..1b4f2fddd8 100644 +--- a/mkspecs/features/qt_docs.prf ++++ b/mkspecs/features/qt_docs.prf +@@ -45,7 +45,7 @@ QMAKE_DOCS_OUTPUTDIR = $$QMAKE_DOCS_BASE_OUTDIR/$$QMAKE_DOCS_TARGETDIR + + QDOC += -outputdir $$shell_quote($$QMAKE_DOCS_OUTPUTDIR) + !build_online_docs: \ +- QDOC += -installdir $$shell_quote($$[QT_INSTALL_DOCS]) ++ QDOC += -installdir $$shell_quote($$NIX_OUTPUT_DOC) + PREP_DOC_INDEXES = + DOC_INDEXES = + !isEmpty(QTREPOS) { +@@ -64,8 +64,8 @@ DOC_INDEXES = + DOC_INDEXES += -indexdir $$shell_quote($$qrep/doc) + } else { + prepare_docs: \ +- PREP_DOC_INDEXES += -indexdir $$shell_quote($$[QT_INSTALL_DOCS/get]) +- DOC_INDEXES += -indexdir $$shell_quote($$[QT_INSTALL_DOCS/get]) ++ PREP_DOC_INDEXES += -indexdir $$shell_quote($$NIX_OUTPUT_DOC) ++ DOC_INDEXES += -indexdir $$shell_quote($$NIX_OUTPUT_DOC) + } + + qtattributionsscanner.target = qtattributionsscanner +@@ -88,12 +88,12 @@ prepare_docs { + qch_docs.commands = $$QHELPGENERATOR $$shell_quote($$QMAKE_DOCS_OUTPUTDIR/$${QMAKE_DOCS_TARGET}.qhp) -o $$shell_quote($$QMAKE_DOCS_BASE_OUTDIR/$${QMAKE_DOCS_TARGET}.qch) + + inst_html_docs.files = $$QMAKE_DOCS_OUTPUTDIR +- inst_html_docs.path = $$[QT_INSTALL_DOCS] ++ inst_html_docs.path = $$NIX_OUTPUT_DOC + inst_html_docs.CONFIG += no_check_exist directory no_default_install no_build + INSTALLS += inst_html_docs + + inst_qch_docs.files = $$QMAKE_DOCS_BASE_OUTDIR/$${QMAKE_DOCS_TARGET}.qch +- inst_qch_docs.path = $$[QT_INSTALL_DOCS] ++ inst_qch_docs.path = $$NIX_OUTPUT_DOC + inst_qch_docs.CONFIG += no_check_exist no_default_install no_build + INSTALLS += inst_qch_docs + +diff --git a/mkspecs/features/qt_example_installs.prf b/mkspecs/features/qt_example_installs.prf +index 43b58817fe..e635b8f67a 100644 +--- a/mkspecs/features/qt_example_installs.prf ++++ b/mkspecs/features/qt_example_installs.prf +@@ -88,7 +88,7 @@ sourcefiles += \ + $$SOURCES $$HEADERS $$FORMS $$RESOURCES $$TRANSLATIONS \ + $$DBUS_ADAPTORS $$DBUS_INTERFACES + addInstallFiles(sources.files, $$sourcefiles) +-sources.path = $$[QT_INSTALL_EXAMPLES]/$$probase ++sources.path = $$NIX_OUTPUT_DEV/share/examples/$$probase + INSTALLS += sources + + check_examples { +diff --git a/mkspecs/features/qt_functions.prf b/mkspecs/features/qt_functions.prf +index 1903e509c8..ae7b585989 100644 +--- a/mkspecs/features/qt_functions.prf ++++ b/mkspecs/features/qt_functions.prf +@@ -69,7 +69,7 @@ defineTest(qtHaveModule) { + defineTest(qtPrepareTool) { + cmd = $$eval(QT_TOOL.$${2}.binary) + isEmpty(cmd) { +- cmd = $$[QT_HOST_BINS]/$$2 ++ cmd = $$system("command -v $$2") + exists($${cmd}.pl) { + $${1}_EXE = $${cmd}.pl + cmd = perl -w $$system_path($${cmd}.pl) +diff --git a/mkspecs/features/qt_installs.prf b/mkspecs/features/qt_installs.prf +index 8f98987b99..21b3bb8b32 100644 +--- a/mkspecs/features/qt_installs.prf ++++ b/mkspecs/features/qt_installs.prf +@@ -12,16 +12,10 @@ + #library + !qt_no_install_library { + win32 { +- host_build: \ +- dlltarget.path = $$[QT_HOST_BINS] +- else: \ +- dlltarget.path = $$[QT_INSTALL_BINS] ++ dlltarget.path = $$NIX_OUTPUT_BIN/bin + INSTALLS += dlltarget + } +- host_build: \ +- target.path = $$[QT_HOST_LIBS] +- else: \ +- target.path = $$[QT_INSTALL_LIBS] ++ target.path = $$NIX_OUTPUT_OUT/lib + !static: target.CONFIG = no_dll + INSTALLS += target + } +@@ -29,33 +23,33 @@ + #headers + qt_install_headers { + gen_headers.files = $$SYNCQT.GENERATED_HEADER_FILES +- gen_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME ++ gen_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME + INSTALLS += gen_headers + + targ_headers.files = $$SYNCQT.HEADER_FILES $$SYNCQT.INJECTED_HEADER_FILES +- targ_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME ++ targ_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME + INSTALLS += targ_headers + + private_headers.files = $$SYNCQT.PRIVATE_HEADER_FILES $$SYNCQT.INJECTED_PRIVATE_HEADER_FILES +- private_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/private ++ private_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/private + INSTALLS += private_headers + + qpa_headers.files = $$SYNCQT.QPA_HEADER_FILES +- qpa_headers.path = $$[QT_INSTALL_HEADERS]/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/qpa ++ qpa_headers.path = $$NIX_OUTPUT_DEV/include/$$MODULE_INCNAME/$$VERSION/$$MODULE_INCNAME/qpa + INSTALLS += qpa_headers + } + + #module + qt_install_module { + !isEmpty(MODULE_PRI) { +- pritarget.path = $$[QT_HOST_DATA]/mkspecs/modules ++ pritarget.path = $$NIX_OUTPUT_DEV/mkspecs/modules + pritarget.files = $$MODULE_PRI + INSTALLS += pritarget + } else: isEmpty(MODULE_PRIVATE_PRI) { + 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.") + } + !isEmpty(MODULE_PRIVATE_PRI) { +- privpritarget.path = $$[QT_HOST_DATA]/mkspecs/modules ++ privpritarget.path = $$NIX_OUTPUT_DEV/mkspecs/modules + privpritarget.files = $$MODULE_PRIVATE_PRI + INSTALLS += privpritarget + } +diff --git a/mkspecs/features/qt_plugin.prf b/mkspecs/features/qt_plugin.prf +index 40528a65e2..903f795284 100644 +--- a/mkspecs/features/qt_plugin.prf ++++ b/mkspecs/features/qt_plugin.prf +@@ -88,7 +88,7 @@ CONFIG(static, static|shared)|prefix_build { + } + } + +-target.path = $$[QT_INSTALL_PLUGINS]/$$PLUGIN_TYPE ++target.path = $$NIX_OUTPUT_PLUGIN/$$PLUGIN_TYPE + INSTALLS += target + + TARGET = $$qt5LibraryTarget($$TARGET) +diff --git a/src/corelib/Qt5CoreConfigExtras.cmake.in b/src/corelib/Qt5CoreConfigExtras.cmake.in +index e0652fdcf9..450b2a2d28 100644 +--- a/src/corelib/Qt5CoreConfigExtras.cmake.in ++++ b/src/corelib/Qt5CoreConfigExtras.cmake.in +@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::qmake) + add_executable(Qt5::qmake IMPORTED) + + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) +- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") + !!ELSE + set(imported_location \"$${CMAKE_BIN_DIR}qmake$$CMAKE_BIN_SUFFIX\") + !!ENDIF +@@ -18,7 +18,7 @@ if (NOT TARGET Qt5::moc) + add_executable(Qt5::moc IMPORTED) + + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) +- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") + !!ELSE + set(imported_location \"$${CMAKE_BIN_DIR}moc$$CMAKE_BIN_SUFFIX\") + !!ENDIF +@@ -35,7 +35,7 @@ if (NOT TARGET Qt5::rcc) + add_executable(Qt5::rcc IMPORTED) + + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) +- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") + !!ELSE + set(imported_location \"$${CMAKE_BIN_DIR}rcc$$CMAKE_BIN_SUFFIX\") + !!ENDIF +@@ -116,7 +116,7 @@ if (NOT TARGET Qt5::WinMain) + !!IF !isEmpty(CMAKE_RELEASE_TYPE) + set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS RELEASE) + !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\") ++ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\") + !!ELSE + set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_RELEASE}\") + !!ENDIF +@@ -130,7 +130,7 @@ if (NOT TARGET Qt5::WinMain) + set_property(TARGET Qt5::WinMain APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + + !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +- set(imported_location \"${_qt5Core_install_prefix}/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\") ++ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\") + !!ELSE + set(imported_location \"$${CMAKE_LIB_DIR}$${CMAKE_WINMAIN_FILE_LOCATION_DEBUG}\") + !!ENDIF +diff --git a/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in b/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in +index c357237d0e..6f0c75de3c 100644 +--- a/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in ++++ b/src/corelib/Qt5CoreConfigExtrasMkspecDir.cmake.in +@@ -1,6 +1,6 @@ + + !!IF isEmpty(CMAKE_HOST_DATA_DIR_IS_ABSOLUTE) +-set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_HOST_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") ++set(_qt5_corelib_extra_includes \"$$NIX_OUTPUT_DEV/$${CMAKE_HOST_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") + !!ELSE + set(_qt5_corelib_extra_includes \"$${CMAKE_HOST_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\") + !!ENDIF +diff --git a/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in b/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in +index 706304cf34..546420f6ad 100644 +--- a/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in ++++ b/src/corelib/Qt5CoreConfigExtrasMkspecDirForInstall.cmake.in +@@ -1,6 +1,6 @@ + + !!IF isEmpty(CMAKE_INSTALL_DATA_DIR_IS_ABSOLUTE) +-set(_qt5_corelib_extra_includes \"${_qt5Core_install_prefix}/$${CMAKE_INSTALL_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") ++set(_qt5_corelib_extra_includes \"$$NIX_OUTPUT_DEV/$${CMAKE_INSTALL_DATA_DIR}/mkspecs/$${CMAKE_MKSPEC}\") + !!ELSE + set(_qt5_corelib_extra_includes \"$${CMAKE_INSTALL_DATA_DIR}mkspecs/$${CMAKE_MKSPEC}\") + !!ENDIF +diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp +index 463e30e1c3..0e1ab669e4 100644 +--- a/src/corelib/kernel/qcoreapplication.cpp ++++ b/src/corelib/kernel/qcoreapplication.cpp +@@ -2665,6 +2665,15 @@ QStringList QCoreApplication::libraryPaths() + QStringList *app_libpaths = new QStringList; + coreappdata()->app_libpaths.reset(app_libpaths); + ++ // Add library paths derived from PATH ++ const QStringList paths = QFile::decodeName(qgetenv("PATH")).split(':'); ++ const QString plugindir = QStringLiteral("../" NIXPKGS_QT_PLUGIN_PREFIX); ++ for (const QString &path: paths) { ++ if (!path.isEmpty()) { ++ app_libpaths->append(QDir::cleanPath(path + QDir::separator() + plugindir)); ++ } ++ } ++ + const QByteArray libPathEnv = qgetenv("QT_PLUGIN_PATH"); + if (!libPathEnv.isEmpty()) { + QStringList paths = QFile::decodeName(libPathEnv).split(QDir::listSeparator(), QString::SkipEmptyParts); +diff --git a/src/corelib/tools/qtimezoneprivate_tz.cpp b/src/corelib/tools/qtimezoneprivate_tz.cpp +index bed62a02bd..73158993f7 100644 +--- a/src/corelib/tools/qtimezoneprivate_tz.cpp ++++ b/src/corelib/tools/qtimezoneprivate_tz.cpp +@@ -70,7 +70,11 @@ typedef QHash<QByteArray, QTzTimeZone> QTzTimeZoneHash; + // Parse zone.tab table, assume lists all installed zones, if not will need to read directories + static QTzTimeZoneHash loadTzTimeZones() + { +- QString path = QStringLiteral("/usr/share/zoneinfo/zone.tab"); ++ // Try TZDIR first, in case we're running on NixOS. ++ QString path = QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/zone.tab"); ++ // Fallback to traditional paths in case we are not on NixOS. ++ if (!QFile::exists(path)) ++ path = QStringLiteral("/usr/share/zoneinfo/zone.tab"); + if (!QFile::exists(path)) + path = QStringLiteral("/usr/lib/zoneinfo/zone.tab"); + +@@ -644,12 +648,16 @@ void QTzTimeZonePrivate::init(const QByteArray &ianaId) + if (!tzif.open(QIODevice::ReadOnly)) + return; + } else { +- // Open named tz, try modern path first, if fails try legacy path +- tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId)); ++ // Try TZDIR first, in case we're running on NixOS ++ tzif.setFileName(QFile::decodeName(qgetenv("TZDIR")) + QStringLiteral("/") + QString::fromLocal8Bit(ianaId)); + if (!tzif.open(QIODevice::ReadOnly)) { +- tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId)); +- if (!tzif.open(QIODevice::ReadOnly)) +- return; ++ // Open named tz, try modern path first, if fails try legacy path ++ tzif.setFileName(QLatin1String("/usr/share/zoneinfo/") + QString::fromLocal8Bit(ianaId)); ++ if (!tzif.open(QIODevice::ReadOnly)) { ++ tzif.setFileName(QLatin1String("/usr/lib/zoneinfo/") + QString::fromLocal8Bit(ianaId)); ++ if (!tzif.open(QIODevice::ReadOnly)) ++ return; ++ } + } + } + +diff --git a/src/dbus/Qt5DBusConfigExtras.cmake.in b/src/dbus/Qt5DBusConfigExtras.cmake.in +index 1d947159e2..b36865fc48 100644 +--- a/src/dbus/Qt5DBusConfigExtras.cmake.in ++++ b/src/dbus/Qt5DBusConfigExtras.cmake.in +@@ -2,11 +2,7 @@ + if (NOT TARGET Qt5::qdbuscpp2xml) + add_executable(Qt5::qdbuscpp2xml IMPORTED) + +-!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) +- set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") +-!!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") +-!!ENDIF ++ set(imported_location \"$$NIX_OUTPUT_DEV/bin/qdbuscpp2xml$$CMAKE_BIN_SUFFIX\") + _qt5_DBus_check_file_exists(${imported_location}) + + set_target_properties(Qt5::qdbuscpp2xml PROPERTIES +@@ -17,11 +13,7 @@ endif() + if (NOT TARGET Qt5::qdbusxml2cpp) + add_executable(Qt5::qdbusxml2cpp IMPORTED) + +-!!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) +- set(imported_location \"${_qt5DBus_install_prefix}/$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") +-!!ELSE +- set(imported_location \"$${CMAKE_BIN_DIR}qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") +-!!ENDIF ++ set(imported_location \"$$NIX_OUTPUT_DEV/bin/qdbusxml2cpp$$CMAKE_BIN_SUFFIX\") + _qt5_DBus_check_file_exists(${imported_location}) + + set_target_properties(Qt5::qdbusxml2cpp PROPERTIES +diff --git a/src/gui/Qt5GuiConfigExtras.cmake.in b/src/gui/Qt5GuiConfigExtras.cmake.in +index 07869efd7d..fb4183bada 100644 +--- a/src/gui/Qt5GuiConfigExtras.cmake.in ++++ b/src/gui/Qt5GuiConfigExtras.cmake.in +@@ -2,7 +2,7 @@ + !!IF !isEmpty(CMAKE_ANGLE_EGL_DLL_RELEASE) + + !!IF isEmpty(CMAKE_INCLUDE_DIR_IS_ABSOLUTE) +-set(Qt5Gui_EGL_INCLUDE_DIRS \"${_qt5$${CMAKE_MODULE_NAME}_install_prefix}/$$CMAKE_INCLUDE_DIR/QtANGLE\") ++set(Qt5Gui_EGL_INCLUDE_DIRS \"$$NIX_OUTPUT_DEV/$$CMAKE_INCLUDE_DIR/QtANGLE\") + !!ELSE + set(Qt5Gui_EGL_INCLUDE_DIRS \"$$CMAKE_INCLUDE_DIR/QtANGLE\") + !!ENDIF +@@ -17,13 +17,13 @@ macro(_populate_qt5gui_gl_target_properties TargetName Configuration LIB_LOCATIO + set_property(TARGET Qt5::${TargetName} APPEND PROPERTY IMPORTED_CONFIGURATIONS ${Configuration}) + + !!IF isEmpty(CMAKE_DLL_DIR_IS_ABSOLUTE) +- set(imported_location \"${_qt5Gui_install_prefix}/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") ++ set(imported_location \"$$NIX_OUTPUT_OUT/$${CMAKE_DLL_DIR}${LIB_LOCATION}\") + !!ELSE + set(imported_location \"$${CMAKE_DLL_DIR}${LIB_LOCATION}\") + !!ENDIF + + !!IF isEmpty(CMAKE_LIB_DIR_IS_ABSOLUTE) +- set(imported_implib \"${_qt5Gui_install_prefix}/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") ++ set(imported_implib \"$$NIX_OUTPUT_OUT/$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") + !!ELSE + set(imported_implib \"$${CMAKE_LIB_DIR}${IMPLIB_LOCATION}\") + !!ENDIF +diff --git a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp +index b5a0a5bbeb..6c20305f4d 100644 +--- a/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp ++++ b/src/plugins/platforminputcontexts/compose/generator/qtablegenerator.cpp +@@ -265,12 +265,9 @@ void TableGenerator::initPossibleLocations() + m_possibleLocations.reserve(7); + if (qEnvironmentVariableIsSet("QTCOMPOSE")) + m_possibleLocations.append(QString::fromLocal8Bit(qgetenv("QTCOMPOSE"))); +- m_possibleLocations.append(QStringLiteral("/usr/share/X11/locale")); +- m_possibleLocations.append(QStringLiteral("/usr/local/share/X11/locale")); +- m_possibleLocations.append(QStringLiteral("/usr/lib/X11/locale")); +- m_possibleLocations.append(QStringLiteral("/usr/local/lib/X11/locale")); + m_possibleLocations.append(QStringLiteral(X11_PREFIX "/share/X11/locale")); + m_possibleLocations.append(QStringLiteral(X11_PREFIX "/lib/X11/locale")); ++ m_possibleLocations.append(QLatin1String(NIXPKGS_QTCOMPOSE)); + } + + QString TableGenerator::findComposeFile() +diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp +index 57629ac03a..8a7f219a98 100644 +--- a/src/plugins/platforms/xcb/qxcbcursor.cpp ++++ b/src/plugins/platforms/xcb/qxcbcursor.cpp +@@ -316,10 +316,10 @@ QXcbCursor::QXcbCursor(QXcbConnection *conn, QXcbScreen *screen) + #if QT_CONFIG(xcb_xlib) && QT_CONFIG(library) + static bool function_ptrs_not_initialized = true; + if (function_ptrs_not_initialized) { +- QLibrary xcursorLib(QLatin1String("Xcursor"), 1); ++ QLibrary xcursorLib(QLatin1String(NIXPKGS_LIBXCURSOR), 1); + bool xcursorFound = xcursorLib.load(); + if (!xcursorFound) { // try without the version number +- xcursorLib.setFileName(QLatin1String("Xcursor")); ++ xcursorLib.setFileName(QLatin1String(NIXPKGS_LIBXCURSOR)); + xcursorFound = xcursorLib.load(); + } + if (xcursorFound) { +diff --git a/src/plugins/platformthemes/gtk3/main.cpp b/src/plugins/platformthemes/gtk3/main.cpp +index fb1c425d8e..bb8bab9795 100644 +--- a/src/plugins/platformthemes/gtk3/main.cpp ++++ b/src/plugins/platformthemes/gtk3/main.cpp +@@ -39,6 +39,7 @@ + + #include <qpa/qplatformthemeplugin.h> + #include "qgtk3theme.h" ++#include <QFile> + + QT_BEGIN_NAMESPACE + +@@ -54,8 +55,22 @@ public: + QPlatformTheme *QGtk3ThemePlugin::create(const QString &key, const QStringList ¶ms) + { + Q_UNUSED(params); +- if (!key.compare(QLatin1String(QGtk3Theme::name), Qt::CaseInsensitive)) ++ if (!key.compare(QLatin1String(QGtk3Theme::name), Qt::CaseInsensitive)) { ++ ++#ifdef NIXPKGS_QGTK3_XDG_DATA_DIRS ++ QStringList XDG_DATA_DIRS = QFile::decodeName(qgetenv("XDG_DATA_DIRS")).split(':'); ++ XDG_DATA_DIRS << QLatin1String(NIXPKGS_QGTK3_XDG_DATA_DIRS); ++ qputenv("XDG_DATA_DIRS", QFile::encodeName(XDG_DATA_DIRS.join(':'))); ++#endif ++ ++#ifdef NIXPKGS_QGTK3_GIO_EXTRA_MODULES ++ QStringList GIO_EXTRA_MODULES = QFile::decodeName(qgetenv("GIO_EXTRA_MODULES")).split(':'); ++ GIO_EXTRA_MODULES << QLatin1String(NIXPKGS_QGTK3_GIO_EXTRA_MODULES); ++ qputenv("GIO_EXTRA_MODULES", QFile::encodeName(GIO_EXTRA_MODULES.join(':'))); ++#endif ++ + return new QGtk3Theme; ++ } + + return 0; + } +diff --git a/src/testlib/qtestassert.h b/src/testlib/qtestassert.h +index 6498ea84ef..d821ced7fc 100644 +--- a/src/testlib/qtestassert.h ++++ b/src/testlib/qtestassert.h +@@ -44,10 +44,13 @@ + + QT_BEGIN_NAMESPACE + +- ++#if defined(QT_NO_DEBUG) && !defined(QT_FORCE_ASSERTS) ++#define QTEST_ASSERT(cond) do { } while ((false) && (cond)) ++#define QTEST_ASSERT_X(cond, where, what) do { } while ((false) && (cond)) ++#else + #define QTEST_ASSERT(cond) do { if (!(cond)) qt_assert(#cond,__FILE__,__LINE__); } while (false) +- + #define QTEST_ASSERT_X(cond, where, what) do { if (!(cond)) qt_assert_x(where, what,__FILE__,__LINE__); } while (false) ++#endif + + QT_END_NAMESPACE + +diff --git a/src/widgets/Qt5WidgetsConfigExtras.cmake.in b/src/widgets/Qt5WidgetsConfigExtras.cmake.in +index 99d87e2e46..a4eab2aa72 100644 +--- a/src/widgets/Qt5WidgetsConfigExtras.cmake.in ++++ b/src/widgets/Qt5WidgetsConfigExtras.cmake.in +@@ -3,7 +3,7 @@ if (NOT TARGET Qt5::uic) + add_executable(Qt5::uic IMPORTED) + + !!IF isEmpty(CMAKE_BIN_DIR_IS_ABSOLUTE) +- set(imported_location \"${_qt5Widgets_install_prefix}/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") ++ set(imported_location \"$$NIX_OUTPUT_DEV/$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") + !!ELSE + set(imported_location \"$${CMAKE_BIN_DIR}uic$$CMAKE_BIN_SUFFIX\") + !!ENDIF diff --git a/pkgs/development/libraries/qt-5/5.12/qtdeclarative.patch b/pkgs/development/libraries/qt-5/5.12/qtdeclarative.patch new file mode 100644 index 000000000000..8f5b5d4790fb --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.12/qtdeclarative.patch @@ -0,0 +1,33 @@ +diff --git a/src/qml/qml/qqmlimport.cpp b/src/qml/qml/qqmlimport.cpp +index 005db4248..685c5b1b2 100644 +--- a/src/qml/qml/qqmlimport.cpp ++++ b/src/qml/qml/qqmlimport.cpp +@@ -1760,6 +1760,15 @@ QQmlImportDatabase::QQmlImportDatabase(QQmlEngine *e) + QString installImportsPath = QLibraryInfo::location(QLibraryInfo::Qml2ImportsPath); + addImportPath(installImportsPath); + ++ // Add import paths derived from PATH ++ const QStringList paths = QFile::decodeName(qgetenv("PATH")).split(':'); ++ const QString qmldir = QStringLiteral("../" NIXPKGS_QML2_IMPORT_PREFIX); ++ for (const QString &path: paths) { ++ if (!path.isEmpty()) { ++ addImportPath(QDir::cleanPath(path + QDir::separator() + qmldir)); ++ } ++ } ++ + // env import paths + if (Q_UNLIKELY(!qEnvironmentVariableIsEmpty("QML2_IMPORT_PATH"))) { + const QString envImportPath = qEnvironmentVariable("QML2_IMPORT_PATH"); +diff --git a/tools/qmlcachegen/qmlcache.prf b/tools/qmlcachegen/qmlcache.prf +index 537eaf62e..e21de58f6 100644 +--- a/tools/qmlcachegen/qmlcache.prf ++++ b/tools/qmlcachegen/qmlcache.prf +@@ -26,7 +26,7 @@ defineReplace(qmlCacheOutputFileName) { + } + + qmlcacheinst.base = $$QMLCACHE_DESTDIR +-qmlcacheinst.path = $$[QT_INSTALL_QML]/$$TARGETPATH ++qmlcacheinst.path = $$NIX_OUTPUT_QML/$$TARGETPATH + qmlcacheinst.CONFIG = no_check_exist + + qmlcachegen.input = CACHEGEN_FILES diff --git a/pkgs/development/libraries/qt-5/5.12/qtscript.patch b/pkgs/development/libraries/qt-5/5.12/qtscript.patch new file mode 100644 index 000000000000..5508dec1280e --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.12/qtscript.patch @@ -0,0 +1,13 @@ +diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h +index 1f6d25e..087c3fb 100644 +--- a/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h ++++ b/src/3rdparty/javascriptcore/JavaScriptCore/wtf/Threading.h +@@ -81,7 +81,7 @@ + #include <pthread.h> + #elif PLATFORM(GTK) + #include <wtf/gtk/GOwnPtr.h> +-typedef struct _GMutex GMutex; ++typedef union _GMutex GMutex; + typedef struct _GCond GCond; + #endif + diff --git a/pkgs/development/libraries/qt-5/5.12/qtserialport.patch b/pkgs/development/libraries/qt-5/5.12/qtserialport.patch new file mode 100644 index 000000000000..f25524e80bcf --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.12/qtserialport.patch @@ -0,0 +1,22 @@ +diff --git a/src/serialport/qtudev_p.h b/src/serialport/qtudev_p.h +index af2dab2..8e17f64 100644 +--- a/src/serialport/qtudev_p.h ++++ b/src/serialport/qtudev_p.h +@@ -111,9 +111,17 @@ inline QFunctionPointer resolveSymbol(QLibrary *udevLibrary, const char *symbolN + inline bool resolveSymbols(QLibrary *udevLibrary) + { + if (!udevLibrary->isLoaded()) { ++#ifdef NIXPKGS_LIBUDEV ++ udevLibrary->setFileNameAndVersion(QLatin1String(NIXPKGS_LIBUDEV), 1); ++#else + udevLibrary->setFileNameAndVersion(QStringLiteral("udev"), 1); ++#endif + if (!udevLibrary->load()) { ++#ifdef NIXPKGS_LIBUDEV ++ udevLibrary->setFileNameAndVersion(QLatin1String(NIXPKGS_LIBUDEV), 0); ++#else + udevLibrary->setFileNameAndVersion(QStringLiteral("udev"), 0); ++#endif + if (!udevLibrary->load()) { + qWarning("Failed to load the library: %s, supported version(s): %i and %i", qPrintable(udevLibrary->fileName()), 1, 0); + return false; diff --git a/pkgs/development/libraries/qt-5/5.12/qtwebkit.patch b/pkgs/development/libraries/qt-5/5.12/qtwebkit.patch new file mode 100644 index 000000000000..b94a4b76cbab --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.12/qtwebkit.patch @@ -0,0 +1,12 @@ +diff --git a/Source/WebKit2/PlatformQt.cmake b/Source/WebKit2/PlatformQt.cmake +--- a/Source/WebKit2/PlatformQt.cmake ++++ b/Source/WebKit2/PlatformQt.cmake +@@ -261,6 +261,7 @@ + list(APPEND WebKit2_SYSTEM_INCLUDE_DIRECTORIES + ${GLIB_INCLUDE_DIRS} + ${GSTREAMER_INCLUDE_DIRS} ++ ${GSTREAMER_PBUTILS_INCLUDE_DIRS} + ${Qt5Quick_INCLUDE_DIRS} + ${Qt5Quick_PRIVATE_INCLUDE_DIRS} + ${SQLITE_INCLUDE_DIR} + diff --git a/pkgs/development/libraries/qt-5/5.12/srcs.nix b/pkgs/development/libraries/qt-5/5.12/srcs.nix new file mode 100644 index 000000000000..d83edc97e94f --- /dev/null +++ b/pkgs/development/libraries/qt-5/5.12/srcs.nix @@ -0,0 +1,325 @@ +# DO NOT EDIT! This file is generated automatically by fetch-kde-qt.sh +{ fetchurl, mirror }: + +{ + qt3d = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qt3d-everywhere-src-5.12.0.tar.xz"; + sha256 = "1nii8qz8791ripmqd158qah40j2dj50zn7lmqksqz8gz2jfdqam1"; + name = "qt3d-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtactiveqt = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtactiveqt-everywhere-src-5.12.0.tar.xz"; + sha256 = "0gkdx3mc6ysqlf0ci77kf9c961dc9sbi4j3z5q237d1w4js7ca52"; + name = "qtactiveqt-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtandroidextras = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtandroidextras-everywhere-src-5.12.0.tar.xz"; + sha256 = "0s083ngvya8bknp0bvgb3hyk6zr8shg8rmkzn98956dqz0xs3agm"; + name = "qtandroidextras-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtbase = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtbase-everywhere-src-5.12.0.tar.xz"; + sha256 = "1jzfx8c0hzch0kmz2m4vkn65s7ikiymnm29lsymil4hfg0fj40sy"; + name = "qtbase-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtcanvas3d = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtcanvas3d-everywhere-src-5.12.0.tar.xz"; + sha256 = "0a61z5amp409aq9v7j0fyk003fbz2i247idl7lgfbl4qqh0ry6xj"; + name = "qtcanvas3d-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtcharts = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtcharts-everywhere-src-5.12.0.tar.xz"; + sha256 = "0l6lrrwqbqaf6agsghaw4ysm2vb6b4n9j5lgrs1i0q8h9i51rmww"; + name = "qtcharts-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtconnectivity = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtconnectivity-everywhere-src-5.12.0.tar.xz"; + sha256 = "1912a4my72wcqmmdyj24wkwq9p9ih4gzzzvgiq75pfwyhnxa3g4f"; + name = "qtconnectivity-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtdatavis3d = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtdatavis3d-everywhere-src-5.12.0.tar.xz"; + sha256 = "0czlj088gf2r6w5ahh0p8n36lbwmds86mxqijshmhzax5cspxnjf"; + name = "qtdatavis3d-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtdeclarative = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtdeclarative-everywhere-src-5.12.0.tar.xz"; + sha256 = "0yr29hm3bqlwxcmna0bzyxw8k4hw3x8k3k4iiw2sw52p5c85izag"; + name = "qtdeclarative-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtdoc = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtdoc-everywhere-src-5.12.0.tar.xz"; + sha256 = "1k8caa1nmc9nrhb29vq1qzaz608klnjxy509w6ppxlzz2zbpcr9h"; + name = "qtdoc-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtgamepad = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtgamepad-everywhere-src-5.12.0.tar.xz"; + sha256 = "14b0np15gm5lzvip33pg6w9dfs065wwdfz18na28bhbxj6wh06ac"; + name = "qtgamepad-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtgraphicaleffects = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtgraphicaleffects-everywhere-src-5.12.0.tar.xz"; + sha256 = "0m9l031zhw8il66ld8bj1lwqlc2xx89nl6dvssz1kl2d5nqqy1c1"; + name = "qtgraphicaleffects-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtimageformats = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtimageformats-everywhere-src-5.12.0.tar.xz"; + sha256 = "0bkkk5skpplwfbqv7g41rhgynyxs3khvf8gk2rl2gdixdplpv42z"; + name = "qtimageformats-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtlocation = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtlocation-everywhere-src-5.12.0.tar.xz"; + sha256 = "0ja4cwj59y1xhwwf4f5gzr0fdrrsxbh14g2x812n03x0yd6i78xh"; + name = "qtlocation-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtmacextras = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtmacextras-everywhere-src-5.12.0.tar.xz"; + sha256 = "00xhkj66i3srwmzzin1mcx9m94l5ns08f93c1za3wl23ani7n2nr"; + name = "qtmacextras-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtmultimedia = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtmultimedia-everywhere-src-5.12.0.tar.xz"; + sha256 = "1a96x6c2w9rs6vfsdcnzmmad4w32dxy2dvismldcwmwcq2whqjsw"; + name = "qtmultimedia-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtnetworkauth = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtnetworkauth-everywhere-src-5.12.0.tar.xz"; + sha256 = "0x877ra8375pf8d8p6hgdkyw8yzjqfca6rgki6vi1q8fyi31j4a1"; + name = "qtnetworkauth-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtpurchasing = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtpurchasing-everywhere-src-5.12.0.tar.xz"; + sha256 = "1nk0dp247v1rfbnj84g99zsj6iv86pq32f478r92adz9qcgfs2yr"; + name = "qtpurchasing-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtquickcontrols = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtquickcontrols-everywhere-src-5.12.0.tar.xz"; + sha256 = "0wyd24aphpixi3k9vbxw73z3dy1xnf8hwc99wimr5mpf1cj67yrb"; + name = "qtquickcontrols-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtquickcontrols2 = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtquickcontrols2-everywhere-src-5.12.0.tar.xz"; + sha256 = "1ikxj32rd9pipnrz81l5ln700lnw8w6bx573w01x424sx0p7wxw9"; + name = "qtquickcontrols2-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtremoteobjects = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtremoteobjects-everywhere-src-5.12.0.tar.xz"; + sha256 = "0pwx2m17yw1qqv8qigfndgj1yd5kq8w5cbiaqlw4zdk1m6jd0h09"; + name = "qtremoteobjects-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtscript = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtscript-everywhere-src-5.12.0.tar.xz"; + sha256 = "1a7ziipvy8cfmrpw2b868167sw21zrqhfv2la0w9vs6hwli1mzlp"; + name = "qtscript-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtscxml = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtscxml-everywhere-src-5.12.0.tar.xz"; + sha256 = "0syx3bx9pxxrsxanfv245ifppjhbj7sbrndh8il86xlrcr9cwvnw"; + name = "qtscxml-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtsensors = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtsensors-everywhere-src-5.12.0.tar.xz"; + sha256 = "19n5vlx0j5a0h86mpgs86qzsxbyq8fcrls7yqnjdaw0zga234cf5"; + name = "qtsensors-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtserialbus = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtserialbus-everywhere-src-5.12.0.tar.xz"; + sha256 = "16imi82v17n18a5m0i2fcfj6hqdpnzn2z9kdcf6a8h93fv4qd4kb"; + name = "qtserialbus-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtserialport = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtserialport-everywhere-src-5.12.0.tar.xz"; + sha256 = "1fx9fm0418jq05j2hlb52lblq8nr4m0hj8sizi86p708jmb01m2r"; + name = "qtserialport-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtspeech = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtspeech-everywhere-src-5.12.0.tar.xz"; + sha256 = "1yx4wahl7iaj6lgpvnw8pdi2q4wc2fkpzfidd3j1bc98wpna4f8r"; + name = "qtspeech-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtsvg = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtsvg-everywhere-src-5.12.0.tar.xz"; + sha256 = "1kpvqd0p7dblgh26p3a99npqr0wmyg5yv0dcmf78ssrvsy58vrpb"; + name = "qtsvg-everywhere-src-5.12.0.tar.xz"; + }; + }; + qttools = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qttools-everywhere-src-5.12.0.tar.xz"; + sha256 = "1hyschrj568h65m3kl35xqz25hpk61vr98r08375vkavdr5y6k2p"; + name = "qttools-everywhere-src-5.12.0.tar.xz"; + }; + }; + qttranslations = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qttranslations-everywhere-src-5.12.0.tar.xz"; + sha256 = "023m68vdjj75xnbpc1jflyg85amnjc9i6nwv650k0w4n1dp1hksv"; + name = "qttranslations-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtvirtualkeyboard = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtvirtualkeyboard-everywhere-src-5.12.0.tar.xz"; + sha256 = "1nnns0i577zda6qxxd7pxcy06dq0y7lnni8ghn4adh9yl6dvi4yv"; + name = "qtvirtualkeyboard-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtwayland = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtwayland-everywhere-src-5.12.0.tar.xz"; + sha256 = "1mvyv4wkcxj4h3q0mqw53zb1d0pahf8mz3r29kckadvk64djsp2m"; + name = "qtwayland-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtwebchannel = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtwebchannel-everywhere-src-5.12.0.tar.xz"; + sha256 = "1w2b31d7xjzdcgwkb4mz3qrl9ci7c9l4c3v4h8y59isip45g66l5"; + name = "qtwebchannel-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtwebengine = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtwebengine-everywhere-src-5.12.0.tar.xz"; + sha256 = "0z38ad25n7ckylxnmqrxy95ds4pn7i5k7qxh856zgq1h18wiwn5x"; + name = "qtwebengine-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtwebglplugin = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtwebglplugin-everywhere-src-5.12.0.tar.xz"; + sha256 = "0bk5dg33kn2l5lmgd6slsrs9xg15x9h9li91lr1q7qs67b8kl8k5"; + name = "qtwebglplugin-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtwebsockets = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtwebsockets-everywhere-src-5.12.0.tar.xz"; + sha256 = "0gzwfjnlgcijym5bn9gi93qlvzizrhf1q9dq06576419sg0s2ka4"; + name = "qtwebsockets-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtwebview = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtwebview-everywhere-src-5.12.0.tar.xz"; + sha256 = "11b16b31bxcazqzg1ag9rzh4gj9pif2cf3jz2mj1sdprxp22ra5p"; + name = "qtwebview-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtwinextras = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtwinextras-everywhere-src-5.12.0.tar.xz"; + sha256 = "1l6s140vrfxb9ar4p1dq9w2gfk3zvgrpqdxbbzs4ngfpwk6mlky6"; + name = "qtwinextras-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtx11extras = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtx11extras-everywhere-src-5.12.0.tar.xz"; + sha256 = "114b4akzpcgx57c6gkl558bl0mbasi34r22fmq3ny84dhvlv9m06"; + name = "qtx11extras-everywhere-src-5.12.0.tar.xz"; + }; + }; + qtxmlpatterns = { + version = "5.12.0"; + src = fetchurl { + url = "${mirror}/official_releases/qt/5.12/5.12.0/submodules/qtxmlpatterns-everywhere-src-5.12.0.tar.xz"; + sha256 = "0xckcw1j6f5l92c269pb8cx77d21sghp7m7dc05jl1dqmyy7jqpk"; + name = "qtxmlpatterns-everywhere-src-5.12.0.tar.xz"; + }; + }; +} diff --git a/pkgs/development/libraries/qt-5/modules/qtwebengine.nix b/pkgs/development/libraries/qt-5/modules/qtwebengine.nix index ad54a49e50b7..71ecde66a1f3 100644 --- a/pkgs/development/libraries/qt-5/modules/qtwebengine.nix +++ b/pkgs/development/libraries/qt-5/modules/qtwebengine.nix @@ -42,9 +42,8 @@ qtModule { ( cd src/3rdparty/chromium; patchShebangs . ) '' # Patch Chromium build files - + '' - substituteInPlace ./src/3rdparty/chromium/build/common.gypi \ - --replace /bin/echo ${coreutils}/bin/echo + + optionalString (builtins.compareVersions qtCompatVersion "5.12" < 0) '' + substituteInPlace ./src/3rdparty/chromium/build/common.gypi --replace /bin/echo ${coreutils}/bin/echo substituteInPlace ./src/3rdparty/chromium/v8/${if qt56 then "build" else "gypfiles"}/toolchain.gypi \ --replace /bin/echo ${coreutils}/bin/echo substituteInPlace ./src/3rdparty/chromium/v8/${if qt56 then "build" else "gypfiles"}/standalone.gypi \ |