introduce /src qmake property variants
this is for shadow builds during build time, where the respective files are expected in the source dir. Change-Id: I18dcfbdef99e1562a51dacac333642cae8105ebd Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
This commit is contained in:
parent
40880ed440
commit
d795e9ff5f
@ -323,33 +323,46 @@ bool QMakeGlobals::initProperties()
|
||||
QT_PCLOSE(proc);
|
||||
}
|
||||
#endif
|
||||
foreach (QByteArray line, data.split('\n'))
|
||||
{
|
||||
int off = line.indexOf(':');
|
||||
if (off < 0) // huh?
|
||||
continue;
|
||||
if (line.endsWith('\r'))
|
||||
line.chop(1);
|
||||
QString name = QString::fromLatin1(line.left(off));
|
||||
ProString value = ProString(QDir::fromNativeSeparators(
|
||||
QString::fromLocal8Bit(line.mid(off + 1))));
|
||||
properties.insert(ProKey(name), value);
|
||||
if (name.startsWith(QLatin1String("QT_")) && !name.contains(QLatin1Char('/'))) {
|
||||
if (name.startsWith(QLatin1String("QT_INSTALL_"))) {
|
||||
foreach (QByteArray line, data.split('\n')) {
|
||||
int off = line.indexOf(':');
|
||||
if (off < 0) // huh?
|
||||
continue;
|
||||
if (line.endsWith('\r'))
|
||||
line.chop(1);
|
||||
QString name = QString::fromLatin1(line.left(off));
|
||||
ProString value = ProString(QDir::fromNativeSeparators(
|
||||
QString::fromLocal8Bit(line.mid(off + 1))));
|
||||
properties.insert(ProKey(name), value);
|
||||
if (name.startsWith(QLatin1String("QT_"))) {
|
||||
bool plain = !name.contains(QLatin1Char('/'));
|
||||
if (!plain) {
|
||||
if (!name.endsWith(QLatin1String("/get")))
|
||||
continue;
|
||||
name.chop(4);
|
||||
}
|
||||
if (name.startsWith(QLatin1String("QT_INSTALL_"))) {
|
||||
if (plain) {
|
||||
properties.insert(ProKey(name + QLatin1String("/raw")), value);
|
||||
properties.insert(ProKey(name + QLatin1String("/get")), value);
|
||||
if (name == QLatin1String("QT_INSTALL_PREFIX")
|
||||
|| name == QLatin1String("QT_INSTALL_DATA")
|
||||
|| name == QLatin1String("QT_INSTALL_BINS")) {
|
||||
name.replace(3, 7, QLatin1String("HOST"));
|
||||
}
|
||||
properties.insert(ProKey(name + QLatin1String("/src")), value);
|
||||
if (name == QLatin1String("QT_INSTALL_PREFIX")
|
||||
|| name == QLatin1String("QT_INSTALL_DATA")
|
||||
|| name == QLatin1String("QT_INSTALL_BINS")) {
|
||||
name.replace(3, 7, QLatin1String("HOST"));
|
||||
if (plain) {
|
||||
properties.insert(ProKey(name), value);
|
||||
properties.insert(ProKey(name + QLatin1String("/get")), value);
|
||||
}
|
||||
} else if (name.startsWith(QLatin1String("QT_HOST_"))) {
|
||||
properties.insert(ProKey(name + QLatin1String("/get")), value);
|
||||
properties.insert(ProKey(name + QLatin1String("/src")), value);
|
||||
}
|
||||
} else if (name.startsWith(QLatin1String("QT_HOST_"))) {
|
||||
if (plain)
|
||||
properties.insert(ProKey(name + QLatin1String("/get")), value);
|
||||
properties.insert(ProKey(name + QLatin1String("/src")), value);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#else
|
||||
|
@ -83,6 +83,7 @@ QMakeProperty::QMakeProperty() : settings(0)
|
||||
{
|
||||
for (int i = 0; i < sizeof(propList)/sizeof(propList[0]); i++) {
|
||||
QString name = QString::fromLatin1(propList[i].name);
|
||||
m_values[ProKey(name + "/src")] = QLibraryInfo::rawLocation(propList[i].loc, QLibraryInfo::EffectiveSourcePaths);
|
||||
m_values[ProKey(name + "/get")] = QLibraryInfo::rawLocation(propList[i].loc, QLibraryInfo::EffectivePaths);
|
||||
QString val = QLibraryInfo::rawLocation(propList[i].loc, QLibraryInfo::FinalPaths);
|
||||
if (!propList[i].raw) {
|
||||
@ -164,11 +165,14 @@ QMakeProperty::exec()
|
||||
ProString val = value(ProKey(prop));
|
||||
ProString pval = value(ProKey(prop + "/raw"));
|
||||
ProString gval = value(ProKey(prop + "/get"));
|
||||
ProString sval = value(ProKey(prop + "/src"));
|
||||
fprintf(stdout, "%s:%s\n", prop.toLatin1().constData(), val.toLatin1().constData());
|
||||
if (!pval.isEmpty() && pval != val)
|
||||
fprintf(stdout, "%s/raw:%s\n", prop.toLatin1().constData(), pval.toLatin1().constData());
|
||||
if (!gval.isEmpty() && gval != (pval.isEmpty() ? val : pval))
|
||||
fprintf(stdout, "%s/get:%s\n", prop.toLatin1().constData(), gval.toLatin1().constData());
|
||||
if (!sval.isEmpty() && sval != gval)
|
||||
fprintf(stdout, "%s/src:%s\n", prop.toLatin1().constData(), sval.toLatin1().constData());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -78,6 +78,7 @@ struct QLibrarySettings
|
||||
QLibrarySettings();
|
||||
QScopedPointer<QSettings> settings;
|
||||
#ifdef QT_BOOTSTRAPPED
|
||||
bool haveEffectiveSourcePaths;
|
||||
bool haveEffectivePaths;
|
||||
bool havePaths;
|
||||
#endif
|
||||
@ -99,8 +100,10 @@ public:
|
||||
static bool haveGroup(QLibraryInfo::PathGroup group)
|
||||
{
|
||||
QLibrarySettings *ls = qt_library_settings();
|
||||
return ls ? (group == QLibraryInfo::EffectivePaths
|
||||
? ls->haveEffectivePaths : ls->havePaths) : false;
|
||||
return ls ? (group == QLibraryInfo::EffectiveSourcePaths
|
||||
? ls->haveEffectiveSourcePaths
|
||||
: group == QLibraryInfo::EffectivePaths
|
||||
? ls->haveEffectivePaths : ls->havePaths) : false;
|
||||
}
|
||||
#endif
|
||||
static QSettings *configuration()
|
||||
@ -122,7 +125,12 @@ QLibrarySettings::QLibrarySettings()
|
||||
// This code needs to be in the regular library, as otherwise a qt.conf that
|
||||
// works for qmake would break things for dynamically built Qt tools.
|
||||
QStringList children = settings->childGroups();
|
||||
#ifdef QT_BOOTSTRAPPED
|
||||
haveEffectiveSourcePaths = children.contains(QLatin1String("EffectiveSourcePaths"));
|
||||
haveEffectivePaths = haveEffectiveSourcePaths || children.contains(QLatin1String("EffectivePaths"));
|
||||
#else
|
||||
haveEffectivePaths = children.contains(QLatin1String("EffectivePaths"));
|
||||
#endif
|
||||
// Backwards compat: an existing but empty file is claimed to contain the Paths section.
|
||||
havePaths = !haveEffectivePaths || children.contains(QLatin1String("Paths"));
|
||||
#ifndef QT_BOOTSTRAPPED
|
||||
@ -130,6 +138,9 @@ QLibrarySettings::QLibrarySettings()
|
||||
settings.reset(0);
|
||||
#else
|
||||
} else {
|
||||
#ifdef QT_BOOTSTRAPPED
|
||||
haveEffectiveSourcePaths = false;
|
||||
#endif
|
||||
haveEffectivePaths = false;
|
||||
havePaths = false;
|
||||
#endif
|
||||
@ -334,9 +345,12 @@ QLibraryInfo::rawLocation(LibraryLocation loc, PathGroup group)
|
||||
// and qt.conf with that section is present, use it, otherwise fall back to
|
||||
// FinalPaths. For FinalPaths, use qt.conf if present and contains not only
|
||||
// [EffectivePaths], otherwise fall back to builtins.
|
||||
// EffectiveSourcePaths falls back to EffectivePaths.
|
||||
if (!QLibraryInfoPrivate::haveGroup(group)
|
||||
&& (group == FinalPaths
|
||||
|| !(group = FinalPaths, QLibraryInfoPrivate::haveGroup(FinalPaths))))
|
||||
&& !(group == EffectiveSourcePaths
|
||||
&& (group = EffectivePaths, QLibraryInfoPrivate::haveGroup(group)))
|
||||
&& !(group == EffectivePaths
|
||||
&& (group = FinalPaths, QLibraryInfoPrivate::haveGroup(group))))
|
||||
#elif !defined(QT_NO_SETTINGS)
|
||||
if (!QLibraryInfoPrivate::configuration())
|
||||
#endif
|
||||
@ -368,6 +382,7 @@ QLibraryInfo::rawLocation(LibraryLocation loc, PathGroup group)
|
||||
QSettings *config = QLibraryInfoPrivate::configuration();
|
||||
config->beginGroup(QLatin1String(
|
||||
#ifdef QT_BOOTSTRAPPED
|
||||
group == EffectiveSourcePaths ? "EffectiveSourcePaths" :
|
||||
group == EffectivePaths ? "EffectivePaths" :
|
||||
#endif
|
||||
"Paths"));
|
||||
|
@ -92,7 +92,7 @@ public:
|
||||
};
|
||||
static QString location(LibraryLocation); // ### Qt 6: consider renaming it to path()
|
||||
#ifdef QT_BOOTSTRAPPED
|
||||
enum PathGroup { FinalPaths, EffectivePaths };
|
||||
enum PathGroup { FinalPaths, EffectivePaths, EffectiveSourcePaths };
|
||||
static QString rawLocation(LibraryLocation, PathGroup);
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user