forked from qt-creator/qt-creator
CMake: Dissolve CMakeExtraBuildInfo
The information is effectively derivable from kit and build type, so do it only when needed. Change-Id: Ideb4e5106a6a0632ade98aad894d5b7aa6f83126 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
@@ -59,20 +59,6 @@
|
|||||||
using namespace ProjectExplorer;
|
using namespace ProjectExplorer;
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
namespace CMakeProjectManager {
|
|
||||||
|
|
||||||
class CMakeExtraBuildInfo
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
QString sourceDirectory;
|
|
||||||
CMakeConfig configuration;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // namespace CMakeProjectManager
|
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(CMakeProjectManager::CMakeExtraBuildInfo)
|
|
||||||
|
|
||||||
|
|
||||||
namespace CMakeProjectManager {
|
namespace CMakeProjectManager {
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
@@ -93,8 +79,23 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Core::Id id)
|
|||||||
|
|
||||||
buildSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
buildSteps()->appendStep(Constants::CMAKE_BUILD_STEP_ID);
|
||||||
|
|
||||||
if (DeviceTypeKitAspect::deviceTypeId(target->kit())
|
CMakeConfig config;
|
||||||
== Android::Constants::ANDROID_DEVICE_TYPE) {
|
config.append({"CMAKE_BUILD_TYPE", info.typeName.toUtf8()});
|
||||||
|
|
||||||
|
Kit *k = target->kit();
|
||||||
|
const QString sysRoot = SysRootKitAspect::sysRoot(k).toString();
|
||||||
|
if (!sysRoot.isEmpty()) {
|
||||||
|
config.append(CMakeConfigItem("CMAKE_SYSROOT", sysRoot.toUtf8()));
|
||||||
|
ToolChain *tc = ToolChainKitAspect::toolChain(k,
|
||||||
|
ProjectExplorer::Constants::CXX_LANGUAGE_ID);
|
||||||
|
if (tc) {
|
||||||
|
const QByteArray targetTriple = tc->originalTargetTriple().toUtf8();
|
||||||
|
config.append(CMakeConfigItem("CMAKE_C_COMPILER_TARGET", targetTriple));
|
||||||
|
config.append(CMakeConfigItem("CMAKE_CXX_COMPILER_TARGET ", targetTriple));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (DeviceTypeKitAspect::deviceTypeId(k) == Android::Constants::ANDROID_DEVICE_TYPE) {
|
||||||
buildSteps()->appendStep(Android::Constants::ANDROID_BUILD_APK_ID);
|
buildSteps()->appendStep(Android::Constants::ANDROID_BUILD_APK_ID);
|
||||||
const auto &bs = buildSteps()->steps().constLast();
|
const auto &bs = buildSteps()->steps().constLast();
|
||||||
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_NATIVE_API_LEVEL",
|
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_NATIVE_API_LEVEL",
|
||||||
@@ -128,7 +129,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Core::Id id)
|
|||||||
preferredAbi.toLatin1(),
|
preferredAbi.toLatin1(),
|
||||||
androidAbis});
|
androidAbis});
|
||||||
|
|
||||||
QtSupport::BaseQtVersion *qt = QtSupport::QtKitAspect::qtVersion(target->kit());
|
QtSupport::BaseQtVersion *qt = QtSupport::QtKitAspect::qtVersion(k);
|
||||||
if (qt->qtVersion() >= QtSupport::QtVersionNumber{5, 14, 0}) {
|
if (qt->qtVersion() >= QtSupport::QtVersionNumber{5, 14, 0}) {
|
||||||
auto sdkLocation = bs->data(Android::Constants::SdkLocation).value<FilePath>();
|
auto sdkLocation = bs->data(Android::Constants::SdkLocation).value<FilePath>();
|
||||||
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_SDK",
|
m_initialConfiguration.prepend(CMakeProjectManager::CMakeConfigItem{"ANDROID_SDK",
|
||||||
@@ -150,12 +151,12 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Core::Id id)
|
|||||||
|
|
||||||
if (info.buildDirectory.isEmpty()) {
|
if (info.buildDirectory.isEmpty()) {
|
||||||
setBuildDirectory(shadowBuildDirectory(target->project()->projectFilePath(),
|
setBuildDirectory(shadowBuildDirectory(target->project()->projectFilePath(),
|
||||||
target->kit(),
|
k,
|
||||||
info.displayName,
|
info.displayName,
|
||||||
info.buildType));
|
info.buildType));
|
||||||
}
|
}
|
||||||
auto cinfo = info.extraInfo.value<CMakeExtraBuildInfo>();
|
|
||||||
setConfigurationForCMake(cinfo.configuration);
|
setConfigurationForCMake(config);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -461,16 +462,12 @@ QList<BuildInfo> CMakeBuildConfigurationFactory::availableBuilds(const Kit *k,
|
|||||||
}
|
}
|
||||||
|
|
||||||
BuildInfo CMakeBuildConfigurationFactory::createBuildInfo(const Kit *k,
|
BuildInfo CMakeBuildConfigurationFactory::createBuildInfo(const Kit *k,
|
||||||
const QString &sourceDir,
|
const QString &,
|
||||||
BuildType buildType) const
|
BuildType buildType) const
|
||||||
{
|
{
|
||||||
BuildInfo info(this);
|
BuildInfo info(this);
|
||||||
info.kitId = k->id();
|
info.kitId = k->id();
|
||||||
|
|
||||||
CMakeExtraBuildInfo extra;
|
|
||||||
extra.sourceDirectory = sourceDir;
|
|
||||||
|
|
||||||
CMakeConfigItem buildTypeItem;
|
|
||||||
switch (buildType) {
|
switch (buildType) {
|
||||||
case BuildTypeNone:
|
case BuildTypeNone:
|
||||||
info.typeName = "Build";
|
info.typeName = "Build";
|
||||||
@@ -502,24 +499,6 @@ BuildInfo CMakeBuildConfigurationFactory::createBuildInfo(const Kit *k,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypeItem = {CMakeConfigItem("CMAKE_BUILD_TYPE", info.typeName.toUtf8())};
|
|
||||||
|
|
||||||
if (!buildTypeItem.isNull())
|
|
||||||
extra.configuration.append(buildTypeItem);
|
|
||||||
|
|
||||||
const QString sysRoot = SysRootKitAspect::sysRoot(k).toString();
|
|
||||||
if (!sysRoot.isEmpty()) {
|
|
||||||
extra.configuration.append(CMakeConfigItem("CMAKE_SYSROOT", sysRoot.toUtf8()));
|
|
||||||
ProjectExplorer::ToolChain *tc = ProjectExplorer::ToolChainKitAspect::toolChain(
|
|
||||||
k, ProjectExplorer::Constants::CXX_LANGUAGE_ID);
|
|
||||||
if (tc) {
|
|
||||||
const QByteArray targetTriple = tc->originalTargetTriple().toUtf8();
|
|
||||||
extra.configuration.append(CMakeConfigItem("CMAKE_C_COMPILER_TARGET", targetTriple));
|
|
||||||
extra.configuration.append(CMakeConfigItem("CMAKE_CXX_COMPILER_TARGET ", targetTriple));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
info.extraInfo = QVariant::fromValue(extra);
|
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user