diff options
author | El Mehdi Fekari <mfekari@rim.com> | 2013-10-21 11:20:36 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@digia.com> | 2013-10-21 16:07:13 +0200 |
commit | 6cc396efed816d0841d1b06bfe20a6aa098fdf1e (patch) | |
tree | d80795967141028ecb324fd514e374cee6a75d78 /src/plugins/qnx/qnxutils.cpp | |
parent | fafc00da4ac128681ff95153c295856bc38a7437 (diff) | |
download | qt-creator-6cc396efed816d0841d1b06bfe20a6aa098fdf1e.tar.gz |
Qnx: Fix broken qmake environment
Fix the way we parse PATH and LD_LIBRARY_PATH.
Change-Id: I9928bf3573728580af6f361ce30101d8db142fc2
Reviewed-by: Tobias Hunger <tobias.hunger@digia.com>
Diffstat (limited to 'src/plugins/qnx/qnxutils.cpp')
-rw-r--r-- | src/plugins/qnx/qnxutils.cpp | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/src/plugins/qnx/qnxutils.cpp b/src/plugins/qnx/qnxutils.cpp index 60f38e62ad..83129c624a 100644 --- a/src/plugins/qnx/qnxutils.cpp +++ b/src/plugins/qnx/qnxutils.cpp @@ -108,6 +108,11 @@ QList<Utils::EnvironmentItem> QnxUtils::qnxEnvironmentFromNdkFile(const QString if (var == QLatin1String("BASE_DIR") || var == QLatin1String("BASE_DIR_REPLACED")) value = QFileInfo(fileName).dir().absolutePath(); + // LATEST_LINUX_JRE is evaluated when sourcing the file script + // TODO: run the script and get environment instead of parsing it(?) + if (var == QLatin1String("LATEST_LINUX_JRE")) + continue; + if (Utils::HostOsInfo::isWindowsHost()) { QRegExp systemVarRegExp(QLatin1String("IF NOT DEFINED ([\\w\\d]+)\\s+set ([\\w\\d]+)=([\\w\\d]+)")); if (line.contains(systemVarRegExp)) { @@ -150,10 +155,21 @@ QList<Utils::EnvironmentItem> QnxUtils::qnxEnvironmentFromNdkFile(const QString values = it.value().split(QLatin1Char(':')); QString key = it.key(); + QStringList modifiedValues; foreach (const QString &value, values) { const QString ownKeyAsWindowsVar = QLatin1Char('%') + key + QLatin1Char('%'); const QString ownKeyAsUnixVar = QLatin1Char('$') + key; - if (value != ownKeyAsUnixVar && value != ownKeyAsWindowsVar) { // to ignore e.g. PATH=$PATH + if (value == ownKeyAsUnixVar) { // e.g. $PATH ==> ${PATH} + QString val = key; + val.prepend(QLatin1String("${")); + val.append(QLatin1Char('}')); + modifiedValues.append(val); + } else if (value == ownKeyAsWindowsVar) { + modifiedValues.append(value); + } else { + if (value.contains(QLatin1String("LATEST_LINUX_JRE"))) // Skip evaluated LATEST_LINUX_JRE variable + continue; + QString val = value; if (val.contains(QLatin1Char('%')) || val.contains(QLatin1Char('$'))) { QMapIterator<QString, QString> replaceIt(fileContent); @@ -176,9 +192,17 @@ QList<Utils::EnvironmentItem> QnxUtils::qnxEnvironmentFromNdkFile(const QString if (key == QLatin1String("CPUVARDIR")) continue; - items.append(Utils::EnvironmentItem(key, val)); + modifiedValues.append(val); } } + + QString modifieddValue; + if (Utils::HostOsInfo::isWindowsHost()) + modifieddValue = modifiedValues.join(QLatin1Char(';')); + else if (Utils::HostOsInfo::isAnyUnixHost()) + modifieddValue = modifiedValues.join(QLatin1Char(':')); + + items.append(Utils::EnvironmentItem(key, modifieddValue)); } return items; @@ -334,7 +358,7 @@ QList<Utils::EnvironmentItem> QnxUtils::qnxEnvironment(const QString &sdkPath) environmentItems.append(Utils::EnvironmentItem(QLatin1String(Constants::QNX_TARGET_KEY), sdkPath + QLatin1String("/target/qnx6"))); environmentItems.append(Utils::EnvironmentItem(QLatin1String(Constants::QNX_HOST_KEY), sdkPath + QLatin1String("/host/win32/x86"))); - environmentItems.append(Utils::EnvironmentItem(QLatin1String("PATH"), sdkPath + QLatin1String("/host/win32/x86/usr/bin"))); + environmentItems.append(Utils::EnvironmentItem(QLatin1String("PATH"), sdkPath + QLatin1String("/host/win32/x86/usr/bin;%PATH%"))); // TODO: //environment.insert(QLatin1String("PATH"), QLatin1String("/etc/qnx/bin")); @@ -343,10 +367,10 @@ QList<Utils::EnvironmentItem> QnxUtils::qnxEnvironment(const QString &sdkPath) environmentItems.append(Utils::EnvironmentItem(QLatin1String(Constants::QNX_TARGET_KEY), sdkPath + QLatin1String("/target/qnx6"))); environmentItems.append(Utils::EnvironmentItem(QLatin1String(Constants::QNX_HOST_KEY), sdkPath + QLatin1String("/host/linux/x86"))); - environmentItems.append(Utils::EnvironmentItem(QLatin1String("PATH"), sdkPath + QLatin1String("/host/linux/x86/usr/bin"))); - environmentItems.append(Utils::EnvironmentItem(QLatin1String("PATH"), QLatin1String("/etc/qnx/bin"))); - environmentItems.append(Utils::EnvironmentItem(QLatin1String("LD_LIBRARY_PATH"), sdkPath + QLatin1String("/host/linux/x86/usr/lib"))); + environmentItems.append(Utils::EnvironmentItem(QLatin1String("PATH"), sdkPath + QLatin1String("/host/linux/x86/usr/bin:/etc/qnx/bin:${PATH}"))); + + environmentItems.append(Utils::EnvironmentItem(QLatin1String("LD_LIBRARY_PATH"), sdkPath + QLatin1String("/host/linux/x86/usr/lib:${LD_LIBRARY_PATH}"))); } environmentItems.append(Utils::EnvironmentItem(QLatin1String("QNX_JAVAHOME"), sdkPath + QLatin1String("/_jvm"))); |