Merge remote-tracking branch 'origin/5.12' into 5.13

Change-Id: Ie7f68dcd5650e0037b6c3313cc9ffdcd7c494fbe
This commit is contained in:
Qt Forward Merge Bot 2019-03-21 01:00:07 +01:00
commit 19510477b4
20 changed files with 168 additions and 147 deletions

View File

@ -13,7 +13,14 @@ equals(TEMPLATE, app): TEMPLATE = aux
isEmpty(TARGETPATH): error("Must set TARGETPATH (QML import name)")
qmldir_file = $$_PRO_FILE_PWD_/qmldir
!isEmpty(DYNAMIC_QMLDIR) {
qmldir_path = $$OUT_PWD
write_file($${qmldir_path}/qmldir, DYNAMIC_QMLDIR)|error("Aborting.")
} else {
qmldir_path = $$_PRO_FILE_PWD_
}
qmldir_file = $${qmldir_path}/qmldir
fq_qml_files =
for(qmlf, QML_FILES): fq_qml_files += $$absolute_path($$qmlf, $$_PRO_FILE_PWD_)
@ -42,13 +49,20 @@ builtin_resources {
}
# Install rules
qmldir.base = $$_PRO_FILE_PWD_
qmldir.base = $$qmldir_path
# Tools need qmldir and plugins.qmltypes always installed on the file system
qmldir.files = $$qmldir_file $$fq_aux_qml_files
qmldir.files = $$qmldir_file
install_qml_files: qmldir.files += $$fq_qml_files
qmldir.path = $$[QT_INSTALL_QML]/$$TARGETPATH
INSTALLS += qmldir
qmlfiles.base = $$_PRO_FILE_PWD_
qmlfiles.files = $$fq_aux_qml_files
install_qml_files: qmlfiles.files += $$fq_qml_files
qmlfiles.path = $${qmldir.path}
INSTALLS += qmlfiles
!debug_and_release|!build_all|CONFIG(release, debug|release) {
!prefix_build {
COPIES += qmldir

View File

@ -544,7 +544,15 @@ defineTest(qtConfResolveLibs) {
} else: contains(l, "^-l.*") {
lib = $$replace(l, "^-l", )
lcan =
unix {
integrity:contains(lib, "^.*\\.a") {
# INTEGRITY compiler searches for exact filename
# if -l argument has .a suffix
lcan += $${lib}
} else: contains(lib, "^:.*") {
# Use exact filename when -l:filename syntax is used.
lib ~= s/^://
lcan += $${lib}
} else: unix {
# Under UNIX, we look for actual shared libraries, in addition
# to static ones.
shexts = $$QMAKE_EXTENSION_SHLIB $$QMAKE_EXTENSIONS_AUX_SHLIB

View File

@ -13,19 +13,19 @@ QMAKE_CFLAGS_SSE4_1 = -msse4.1
QMAKE_CFLAGS_SSE4_2 = -msse4.2
QMAKE_CFLAGS_AVX = -mavx
QMAKE_CFLAGS_AVX2 = -mavx2
QMAKE_CFLAGS_F16C = -mf16c
QMAKE_CFLAGS_RDRND = -mrdrnd
QMAKE_CFLAGS_AVX512F = -mavx512f
QMAKE_CFLAGS_AVX512ER = -mavx512er
QMAKE_CFLAGS_AVX512CD = -mavx512cd
QMAKE_CFLAGS_AVX512PF = -mavx512pf
QMAKE_CFLAGS_AVX512DQ = -mavx512dq
QMAKE_CFLAGS_AVX512BW = -mavx512bw
QMAKE_CFLAGS_AVX512VL = -mavx512vl
QMAKE_CFLAGS_F16C = -mf16c
QMAKE_CFLAGS_RDRND = -mrdrnd
QMAKE_CFLAGS_AVX512F = -mavx512f
QMAKE_CFLAGS_AVX512ER = -mavx512er
QMAKE_CFLAGS_AVX512CD = -mavx512cd
QMAKE_CFLAGS_AVX512PF = -mavx512pf
QMAKE_CFLAGS_AVX512DQ = -mavx512dq
QMAKE_CFLAGS_AVX512BW = -mavx512bw
QMAKE_CFLAGS_AVX512VL = -mavx512vl
QMAKE_CFLAGS_AVX512IFMA = -mavx512ifma
QMAKE_CFLAGS_AVX512VBMI = -mavx512vbmi
QMAKE_CFLAGS_AESNI = -maes
QMAKE_CFLAGS_SHANI = -msha
QMAKE_CFLAGS_AESNI = -maes
QMAKE_CFLAGS_SHANI = -msha
QMAKE_COMPILER += clang_cl llvm

View File

@ -451,8 +451,7 @@ egl::Error Context::onDestroy(const egl::Display *display)
for (auto &zeroTexture : mZeroTextures)
{
auto result = zeroTexture.second->onDestroy(this);
ANGLE_TRY(egl::Error(result));
ANGLE_TRY(zeroTexture.second->onDestroy(this));
zeroTexture.second.set(this, nullptr);
}
mZeroTextures.clear();

View File

@ -192,9 +192,8 @@ Error Stream::consumerAcquire(const gl::Context *context)
{
if (mPlanes[i].texture != nullptr)
{
auto result = mPlanes[i].texture->acquireImageFromStream(
context, mProducerImplementation->getGLFrameDescription(i));
ANGLE_TRY(Error(result));
ANGLE_TRY(mPlanes[i].texture->acquireImageFromStream(
context, mProducerImplementation->getGLFrameDescription(i)));
}
}
@ -214,8 +213,7 @@ Error Stream::consumerRelease(const gl::Context *context)
{
if (mPlanes[i].texture != nullptr)
{
auto result = mPlanes[i].texture->releaseImageFromStream(context);
ANGLE_TRY(Error(result));
ANGLE_TRY(mPlanes[i].texture->releaseImageFromStream(context));
}
}

View File

@ -550,8 +550,7 @@ Error Texture::onDestroy(const Context *context)
{
if (mBoundSurface)
{
auto result = mBoundSurface->releaseTexImage(context, EGL_BACK_BUFFER);
ANGLE_TRY(Error(result));
ANGLE_TRY(mBoundSurface->releaseTexImage(context, EGL_BACK_BUFFER));
mBoundSurface = nullptr;
}
if (mBoundStream)

View File

@ -376,8 +376,7 @@ egl::Error Renderer9::initializeDevice()
ASSERT(!mBlit);
mBlit = new Blit9(this);
auto result = mBlit->initialize();
ANGLE_TRY(egl::Error(result));
ANGLE_TRY(mBlit->initialize());
ASSERT(!mVertexDataManager && !mIndexDataManager);
mVertexDataManager = new VertexDataManager(this);

View File

@ -765,11 +765,19 @@ public class QtActivityDelegate
}
m_layout = new QtLayout(m_activity, startApplication);
int orientation = m_activity.getResources().getConfiguration().orientation;
try {
ActivityInfo info = m_activity.getPackageManager().getActivityInfo(m_activity.getComponentName(), PackageManager.GET_META_DATA);
if (info.metaData.containsKey("android.app.splash_screen_drawable")) {
String splashScreenKey = "android.app.splash_screen_drawable_"
+ (orientation == Configuration.ORIENTATION_LANDSCAPE ? "landscape" : "portrait");
if (!info.metaData.containsKey(splashScreenKey))
splashScreenKey = "android.app.splash_screen_drawable";
if (info.metaData.containsKey(splashScreenKey)) {
m_splashScreenSticky = info.metaData.containsKey("android.app.splash_screen_sticky") && info.metaData.getBoolean("android.app.splash_screen_sticky");
int id = info.metaData.getInt("android.app.splash_screen_drawable");
int id = info.metaData.getInt(splashScreenKey);
m_splashScreen = new ImageView(m_activity);
m_splashScreen.setImageDrawable(m_activity.getResources().getDrawable(id));
m_splashScreen.setScaleType(ImageView.ScaleType.FIT_XY);
@ -789,7 +797,6 @@ public class QtActivityDelegate
new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT));
int orientation = m_activity.getResources().getConfiguration().orientation;
int rotation = m_activity.getWindowManager().getDefaultDisplay().getRotation();
boolean rot90 = (rotation == Surface.ROTATION_90 || rotation == Surface.ROTATION_270);
boolean currentlyLandscape = (orientation == Configuration.ORIENTATION_LANDSCAPE);

View File

@ -52,6 +52,12 @@
<!-- Messages maps -->
<!-- Splash screen -->
<!-- Orientation-specific (portrait/landscape) data is checked first. If not available for current orientation,
then android.app.splash_screen_drawable. For best results, use together with splash_screen_sticky and
use hideSplashScreen() with a fade-out animation from Qt Android Extras to hide the splash screen when you
are done populating your window with content. -->
<!-- meta-data android:name="android.app.splash_screen_drawable_portrait" android:resource="@drawable/logo_portrait" / -->
<!-- meta-data android:name="android.app.splash_screen_drawable_landscape" android:resource="@drawable/logo_landscape" / -->
<!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ -->
<!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ -->
<!-- Splash screen -->

View File

@ -1,93 +0,0 @@
From 2d8118620d4871f74a3ddca233529ff540384477 Mon Sep 17 00:00:00 2001
From: Yuhang Zhao <2546789017@qq.com>
Date: Wed, 13 Feb 2019 23:26:55 +0800
Subject: [PATCH] Fix compilation with icc, converting between egl's and gl's
Error types
Each has two constructors from the other, one copying the other
moving; and this leads to an ambiguous overload when converting
Texture::onDestroy()'s gl::error to the egl::Error that
gl::Context::onDestroy() returns. Passing the value through a
temporary prevents the move-constructor from being attempted and saves
the day. Thanks to Ville Voutilainen for suggesting the fix.
Fixes: QTBUG-73698
Change-Id: I628173399a73cee2e253201bc3e8d3e6477a2fbf
---
src/3rdparty/angle/src/libANGLE/Context.cpp | 3 ++-
src/3rdparty/angle/src/libANGLE/Stream.cpp | 8 +++++---
src/3rdparty/angle/src/libANGLE/Texture.cpp | 3 ++-
.../angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp | 3 ++-
4 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/src/3rdparty/angle/src/libANGLE/Context.cpp b/src/3rdparty/angle/src/libANGLE/Context.cpp
index f638beda58..84f7936feb 100644
--- a/src/3rdparty/angle/src/libANGLE/Context.cpp
+++ b/src/3rdparty/angle/src/libANGLE/Context.cpp
@@ -451,7 +451,8 @@ egl::Error Context::onDestroy(const egl::Display *display)
for (auto &zeroTexture : mZeroTextures)
{
- ANGLE_TRY(zeroTexture.second->onDestroy(this));
+ auto result = zeroTexture.second->onDestroy(this);
+ ANGLE_TRY(egl::Error(result));
zeroTexture.second.set(this, nullptr);
}
mZeroTextures.clear();
diff --git a/src/3rdparty/angle/src/libANGLE/Stream.cpp b/src/3rdparty/angle/src/libANGLE/Stream.cpp
index 68279976b7..e384c7d486 100644
--- a/src/3rdparty/angle/src/libANGLE/Stream.cpp
+++ b/src/3rdparty/angle/src/libANGLE/Stream.cpp
@@ -192,8 +192,9 @@ Error Stream::consumerAcquire(const gl::Context *context)
{
if (mPlanes[i].texture != nullptr)
{
- ANGLE_TRY(mPlanes[i].texture->acquireImageFromStream(
- context, mProducerImplementation->getGLFrameDescription(i)));
+ auto result = mPlanes[i].texture->acquireImageFromStream(
+ context, mProducerImplementation->getGLFrameDescription(i));
+ ANGLE_TRY(Error(result));
}
}
@@ -213,7 +214,8 @@ Error Stream::consumerRelease(const gl::Context *context)
{
if (mPlanes[i].texture != nullptr)
{
- ANGLE_TRY(mPlanes[i].texture->releaseImageFromStream(context));
+ auto result = mPlanes[i].texture->releaseImageFromStream(context);
+ ANGLE_TRY(Error(result));
}
}
diff --git a/src/3rdparty/angle/src/libANGLE/Texture.cpp b/src/3rdparty/angle/src/libANGLE/Texture.cpp
index da92e65916..7447604fe6 100644
--- a/src/3rdparty/angle/src/libANGLE/Texture.cpp
+++ b/src/3rdparty/angle/src/libANGLE/Texture.cpp
@@ -550,7 +550,8 @@ Error Texture::onDestroy(const Context *context)
{
if (mBoundSurface)
{
- ANGLE_TRY(mBoundSurface->releaseTexImage(context, EGL_BACK_BUFFER));
+ auto result = mBoundSurface->releaseTexImage(context, EGL_BACK_BUFFER);
+ ANGLE_TRY(Error(result));
mBoundSurface = nullptr;
}
if (mBoundStream)
diff --git a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
index 75c6298868..b583273641 100644
--- a/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
+++ b/src/3rdparty/angle/src/libANGLE/renderer/d3d/d3d9/Renderer9.cpp
@@ -376,7 +376,8 @@ egl::Error Renderer9::initializeDevice()
ASSERT(!mBlit);
mBlit = new Blit9(this);
- ANGLE_TRY(mBlit->initialize());
+ auto result = mBlit->initialize();
+ ANGLE_TRY(egl::Error(result));
ASSERT(!mVertexDataManager && !mIndexDataManager);
mVertexDataManager = new VertexDataManager(this);
--
2.20.1.windows.1

View File

@ -629,7 +629,10 @@ void QIconLoaderEngine::ensureLoaded()
void QIconLoaderEngine::paint(QPainter *painter, const QRect &rect,
QIcon::Mode mode, QIcon::State state)
{
QSize pixmapSize = rect.size();
const qreal dpr = !qApp->testAttribute(Qt::AA_UseHighDpiPixmaps) ?
qreal(1.0) : painter->device()->devicePixelRatioF();
QSize pixmapSize = rect.size() * dpr;
painter->drawPixmap(rect, pixmap(pixmapSize, mode, state));
}

View File

@ -908,7 +908,7 @@ QFont QFontconfigDatabase::defaultFont() const
void QFontconfigDatabase::setupFontEngine(QFontEngineFT *engine, const QFontDef &fontDef) const
{
bool antialias = !(fontDef.styleStrategy & QFont::NoAntialias);
bool forcedAntialiasSetting = !antialias;
bool forcedAntialiasSetting = !antialias || QHighDpiScaling::isActive();
const QPlatformServices *services = QGuiApplicationPrivate::platformIntegration()->services();
bool useXftConf = false;

View File

@ -192,6 +192,10 @@ bool QXcbNativeBackingStore::scroll(const QRegion &area, int dx, int dy)
void QXcbNativeBackingStore::beginPaint(const QRegion &region)
{
QX11PlatformPixmap *x11pm = qt_x11Pixmap(m_pixmap);
if (x11pm)
x11pm->setIsBackingStore(true);
#if QT_CONFIG(xrender)
if (m_translucentBackground) {
const QVector<XRectangle> xrects = qt_region_to_xrectangles(region);

View File

@ -200,6 +200,7 @@ public:
uint has_pattern : 1;
uint has_alpha_pen : 1;
uint has_alpha_brush : 1;
uint use_sysclip : 1;
uint render_hints;
const QXcbX11Info *xinfo;
@ -701,6 +702,9 @@ bool QX11PaintEngine::begin(QPaintDevice *pdev)
d->xlibMaxLinePoints = 32762; // a safe number used to avoid, call to XMaxRequestSize(d->dpy) - 3;
d->opacity = 1;
QX11PlatformPixmap *x11pm = paintDevice()->devType() == QInternal::Pixmap ? qt_x11Pixmap(*static_cast<QPixmap *>(paintDevice())) : nullptr;
d->use_sysclip = paintDevice()->devType() == QInternal::Widget || (x11pm ? x11pm->isBackingStore() : false);
// Set up the polygon clipper. Note: This will only work in
// polyline mode as long as we have a buffer zone, since a
// polyline may be clipped into several non-connected polylines.
@ -1472,7 +1476,7 @@ void QX11PaintEngine::updatePen(const QPen &pen)
}
if (!d->has_clipping) { // if clipping is set the paintevent clip region is merged with the clip region
QRegion sysClip = systemClip();
QRegion sysClip = d->use_sysclip ? systemClip() : QRegion();
if (!sysClip.isEmpty())
x11SetClipRegion(d->dpy, d->gc, 0, d->picture, sysClip);
else
@ -1603,7 +1607,7 @@ void QX11PaintEngine::updateBrush(const QBrush &brush, const QPointF &origin)
vals.fill_style = s;
XChangeGC(d->dpy, d->gc_brush, mask, &vals);
if (!d->has_clipping) {
QRegion sysClip = systemClip();
QRegion sysClip = d->use_sysclip ? systemClip() : QRegion();
if (!sysClip.isEmpty())
x11SetClipRegion(d->dpy, d->gc_brush, 0, d->picture, sysClip);
else
@ -2223,7 +2227,7 @@ void QX11PaintEngine::updateMatrix(const QTransform &mtx)
void QX11PaintEngine::updateClipRegion_dev(const QRegion &clipRegion, Qt::ClipOperation op)
{
Q_D(QX11PaintEngine);
QRegion sysClip = systemClip();
QRegion sysClip = d->use_sysclip ? systemClip() : QRegion();
if (op == Qt::NoClip) {
d->has_clipping = false;
d->crgn = sysClip;

View File

@ -1772,6 +1772,20 @@ XID QX11PlatformPixmap::createBitmapFromImage(const QImage &image)
return hd;
}
bool QX11PlatformPixmap::isBackingStore() const
{
return (flags & IsBackingStore);
}
void QX11PlatformPixmap::setIsBackingStore(bool on)
{
if (on)
flags |= IsBackingStore;
else {
flags &= ~IsBackingStore;
}
}
#if QT_CONFIG(xrender)
void QX11PlatformPixmap::convertToARGB32(bool preserveContents)
{

View File

@ -90,6 +90,8 @@ public:
void convertToARGB32(bool preserveContents = true);
#endif
bool isBackingStore() const;
void setIsBackingStore(bool on);
private:
friend class QX11PaintEngine;
friend const QXcbX11Info &qt_x11Info(const QPixmap &pixmap);
@ -110,7 +112,8 @@ private:
Uninitialized = 0x1,
Readonly = 0x2,
InvertedWhenBoundToTexture = 0x4,
GlSurfaceCreatedWithAlpha = 0x8
GlSurfaceCreatedWithAlpha = 0x8,
IsBackingStore = 0x10
};
uint flags;

View File

@ -67,7 +67,9 @@ static QString targetName( BuildType buildMode, const QString& target, const QSt
break;
case Dll: // dll
targetName.prepend("lib");
targetName.append("." + version + ".dylib");
if (!version.isEmpty())
targetName.append('.' + version);
targetName.append(".dylib");
break;
case Lib: // lib
targetName.prepend("lib");

View File

@ -60,7 +60,8 @@ public:
// executes a make in the specified workPath, with an optional target (eg. install)
bool make( const QString &workPath, const QString &target = QString(), bool expectFail = false );
// checks if the executable exists in destDir
bool exists( const QString &destDir, const QString &exeName, BuildType buildType, const QString &version );
bool exists(const QString &destDir, const QString &exeName, BuildType buildType,
const QString &version = QString());
// removes the makefile
bool removeMakefile( const QString &workPath );
// removes the project file specified by 'project' on the 'workPath'

View File

@ -6,7 +6,6 @@ DEFINES += SIMPLEDLL_MAKEDLL
HEADERS = simple.h
SOURCES = simple.cpp
VERSION = 1.0.0
INCLUDEPATH += . tmp
MOC_DIR = tmp
OBJECTS_DIR = tmp

View File

@ -30,9 +30,11 @@
#include "testcompiler.h"
#include <QDir>
#include <QDirIterator>
#include <QObject>
#include <QStandardPaths>
#include <QDir>
#include <QTemporaryDir>
#if defined(DEBUG_BUILD)
# define DIR_INFIX "debug/"
@ -46,8 +48,12 @@ class tst_qmake : public QObject
{
Q_OBJECT
public:
tst_qmake();
private slots:
void initTestCase();
void cleanupTestCase();
void cleanup();
void simple_app();
void simple_app_shadowbuild();
@ -78,11 +84,41 @@ private slots:
private:
TestCompiler test_compiler;
QTemporaryDir tempWorkDir;
QString base_path;
const QString origCurrentDirPath;
};
tst_qmake::tst_qmake()
: tempWorkDir(QDir::tempPath() + "/tst_qmake"),
origCurrentDirPath(QDir::currentPath())
{
}
static void copyDir(const QString &sourceDirPath, const QString &targetDirPath)
{
QDir currentDir;
QDirIterator dit(sourceDirPath, QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden);
while (dit.hasNext()) {
dit.next();
const QString targetPath = targetDirPath + QLatin1Char('/') + dit.fileName();
currentDir.mkpath(targetPath);
copyDir(dit.filePath(), targetPath);
}
QDirIterator fit(sourceDirPath, QDir::Files | QDir::Hidden);
while (fit.hasNext()) {
fit.next();
const QString targetPath = targetDirPath + QLatin1Char('/') + fit.fileName();
QFile::remove(targetPath); // allowed to fail
QFile src(fit.filePath());
QVERIFY2(src.copy(targetPath), qPrintable(src.errorString()));
}
}
void tst_qmake::initTestCase()
{
QVERIFY2(tempWorkDir.isValid(), qPrintable(tempWorkDir.errorString()));
QString binpath = QLibraryInfo::location(QLibraryInfo::BinariesPath);
QString cmd = QString("%1/qmake").arg(binpath);
#ifdef Q_CC_MSVC
@ -99,13 +135,31 @@ void tst_qmake::initTestCase()
#else
test_compiler.setBaseCommands( "make", cmd );
#endif
//Detect the location of the testdata
QString subProgram = QLatin1String("testdata/simple_app/main.cpp");
base_path = QFINDTESTDATA(subProgram);
if (base_path.lastIndexOf(subProgram) > 0)
base_path = base_path.left(base_path.lastIndexOf(subProgram));
else
base_path = QCoreApplication::applicationDirPath();
const QString testDataSubDir = QStringLiteral("testdata");
const QString subProgram = testDataSubDir + QLatin1String("/simple_app/main.cpp");
QString testDataPath = QFINDTESTDATA(subProgram);
if (!testDataPath.endsWith(subProgram))
QFAIL("Cannot find test data directory.");
testDataPath.chop(subProgram.length() - testDataSubDir.length());
QString userWorkDir = qgetenv("TST_QMAKE_BUILD_DIR");
if (userWorkDir.isEmpty()) {
base_path = tempWorkDir.path();
} else {
if (!QFile::exists(userWorkDir)) {
QFAIL(qUtf8Printable(QStringLiteral("TST_QMAKE_BUILD_DIR %1 does not exist.")
.arg(userWorkDir)));
}
base_path = userWorkDir;
}
copyDir(testDataPath, base_path + QLatin1Char('/') + testDataSubDir);
}
void tst_qmake::cleanupTestCase()
{
// On Windows, ~QTemporaryDir fails to remove the directory if we're still in there.
QDir::setCurrent(origCurrentDirPath);
}
void tst_qmake::cleanup()
@ -205,12 +259,12 @@ void tst_qmake::subdirs()
D.remove( workDir + "/simple_dll/Makefile");
QVERIFY( test_compiler.qmake( workDir, "subdirs" ));
QVERIFY( test_compiler.make( workDir ));
QVERIFY( test_compiler.exists( workDir + "/simple_app/dest dir", "simple app", Exe, "1.0.0" ));
QVERIFY( test_compiler.exists( workDir + "/simple_dll/dest dir", "simple dll", Dll, "1.0.0" ));
QVERIFY( test_compiler.exists(workDir + "/simple_app/dest dir", "simple app", Exe));
QVERIFY( test_compiler.exists(workDir + "/simple_dll/dest dir", "simple dll", Dll));
QVERIFY( test_compiler.makeClean( workDir ));
// Should still exist after a make clean
QVERIFY( test_compiler.exists( workDir + "/simple_app/dest dir", "simple app", Exe, "1.0.0" ));
QVERIFY( test_compiler.exists( workDir + "/simple_dll/dest dir", "simple dll", Dll, "1.0.0" ));
QVERIFY( test_compiler.exists(workDir + "/simple_app/dest dir", "simple app", Exe));
QVERIFY( test_compiler.exists(workDir + "/simple_dll/dest dir", "simple dll", Dll));
// Since subdirs templates do not have a make dist clean, we should clean up ourselves
// properly
QVERIFY( test_compiler.makeDistClean( workDir ));
@ -500,8 +554,8 @@ void tst_qmake::resources()
QVERIFY(test_compiler.qmake(workDir, "resources"));
{
QFile qrcFile(workDir + "/.rcc/" DIR_INFIX "qmake_pro_file.qrc");
QVERIFY(qrcFile.exists());
QFile qrcFile(workDir + '/' + DIR_INFIX "qmake_pro_file.qrc");
QVERIFY2(qrcFile.exists(), qPrintable(qrcFile.fileName()));
QVERIFY(qrcFile.open(QFile::ReadOnly));
QByteArray qrcXml = qrcFile.readAll();
QVERIFY(qrcXml.contains("alias=\"resources.pro\""));
@ -509,7 +563,7 @@ void tst_qmake::resources()
}
{
QFile qrcFile(workDir + "/.rcc/" DIR_INFIX "qmake_subdir.qrc");
QFile qrcFile(workDir + '/' + DIR_INFIX "qmake_subdir.qrc");
QVERIFY(qrcFile.exists());
QVERIFY(qrcFile.open(QFile::ReadOnly));
QByteArray qrcXml = qrcFile.readAll();
@ -517,7 +571,7 @@ void tst_qmake::resources()
}
{
QFile qrcFile(workDir + "/.rcc/" DIR_INFIX "qmake_qmake_immediate.qrc");
QFile qrcFile(workDir + '/' + DIR_INFIX "qmake_qmake_immediate.qrc");
QVERIFY(qrcFile.exists());
QVERIFY(qrcFile.open(QFile::ReadOnly));
QByteArray qrcXml = qrcFile.readAll();